DecordRay

[프로그래머스] Level2 : n^2 배열 자르기[Python] 본문

알고리즘/프로그래머스

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

DecordRay 2023. 1. 12. 17:56
728x90
반응형

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/87390

 

프로그래머스

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

programmers.co.kr

 

제한사항

  • 1 ≤ n ≤ 10^7
  • 0 ≤ left  right < n^2
  • right - left < 10^5

풀이 :

1. 첫번째 제한사항을 통해 배열에 모든 값을 넣는 것이 의도가 아님을 파악 -> 모든 값을 넣는다면 시간초과가 날 것

2. 세번째 제한사항을 통해 right-left만큼 반목문을 통해서 원하는 값들만 저장하면 될 것이라고 생각

3. 문제의 예시 애니메이션을 통해 배열 값을 확인해보면 알 수 있는 것처럼

좌표값(x-가로축,y-세로축) 0 1 2
0 1 -> max(0,0) + 1 2 -> max(1,0) + 1 3 -> max(2,0) + 1
1 2 -> max(0,1) + 1 2 -> max(1,1) + 1 3 -> max(2,1) + 1
2 3 -> max(0,2) + 1 3 -> max(1,2) + 1 3 -> max(2,2) + 1

max(x,y)좌표값 + 1 을 해준 값이 각 좌표에 들어있는 값임을 알 수 있다.

 

코드 :

def solution(n, left, right):
    answer = []

    for i in range(left,right+1):
        row = i // n
        col = i % n
        answer.append(max(row,col)+1)
    return answer
728x90
반응형
Comments