본문 바로가기
Algorithm/프로그래머스

[프로그래머스] 파이썬 문제풀이 - n^2 배열 자르기

by whdgus928 2023. 4. 24.

첫 풀이

1. 이중 for문을 돌면서 i와j 중 큰 값에 1을 더해 배열에 추가하면 문제에서 원하는 배열을 얻을 수 있다

2. left와 right를 인덱스 삼아 자른다 

 

def solution(n, left, right):
    answer = []
    #board=[[0]*n for _ in range(n)]
    
    for i in range(n):
        for j in range(n):
            answer.append(max(i,j)+1)
    answer=answer[left:right+1]
    
    return answer

시간 초과 발생

더 나은 답안

1. n이 10의 7제곱까지기 때문에 이차원 배열을 사용하면 시간초과 발생

2. 문제에서 필요로 하는 left ~ right 구간만 구하기

3. 인덱스를 통해 x,y 좌표를 구한다

4. 좌표 중 큰 값에 1을 더하면 끝

 

def solution(n, left, right):
    answer = []
    
    for i in range(left,right+1):
        answer.append(max(i//n,i%n)+1)
    
    return answer

 

배운 점

1. 제한 사항 변수 범위 확인하기

2. 문제가 쉬우면 시간초과 잘 확인해야함

반응형

댓글