코딩테스트/프로그래머스

[프로그래머스] [Level 2] n^2 배열 자르기

박소민 2022. 9. 22. 23:50
n^2 배열 자르기
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

  • 첫 풀이
    • fail: 시간 초과
      • 2중 for문만 돌아도 시간 초과가 나는 것을 확인하고 for문 한 번에 풀수 있는 풀이를 생각함
def solution(n, left, right):
    ls=[[0]*n for _ in range(n)]
    for i in range(n):
        for j in range(n):
            ls[i][j]=max(i+1,j+1)
    re=[]
    for i in range(n):
        re+=ls[i]
        
    return re[left:right+1]

 

  • 두 번째 풀이
    • 새로 이어붙인 1차원 배열의 인덱스 값이 i일때
    • 그 안에 들어갈 값은 i를 n으로 나눈 (몫+1) 과 (나머지+1) 중 큰 값
      • max(i//n+1, i%n+1)
def solution(n, left, right):
    ls=[]
    for i in range(left,right+1):
        ls.append(max(i//n+1, i%n+1))
    return ls