S E P H ' S

[Python] n^2 배열 자르기 본문

Algorithm/Programmers

[Python] n^2 배열 자르기

yoseph0310 2021. 12. 15. 14:26
 

코딩테스트 연습 - n^2 배열 자르기

정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. n행 n열 크기의 비어있는 2차원 배열을 만듭니다. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다. 1행 1열부

programmers.co.kr

풀이

지문 2에서 '1행 1열 부터 i행 i열까지의 영역 내의 모든 빈 칸 숫자 i로 채웁니다'라고 되어있다.

 

즉, 행과 열에 하나라도 2가 있으면 그 곳은 2, 3이 있으면 3이 되는 것. 그래서 n이 3이라 가정할 때, 2차원 배열은 다음과 같다.

 

1
(0,0)
2
(0,1)
3
(0,2)
2
(1,0)
2
(1,1)
3
(1,2)
3
(2,0)
3
(2,1)
3
(2,2)

 

3번에 따라서 이를 행마다 잘라 1차원 배열로 만들면

다음과 같이 된다.

1 2 3 2 2 3 3 3 3

여기서 8번 인덱스 좌표(2,2)를 예를 들어 보자면, 8을 n으로 나눈 몫과 나머지이고 적힌 값들은 몫과 나머지중에 더 큰 값에 1씩 더한 것임을 알 수 있다. 다른 좌표를 똑같이 해봐도 값은 같다.

 

def sol(n, left, right):
    answer = []
    for i in range(left, right+1):
        answer.append(max(divmod(i, n))+1)

    return answer

'Algorithm > Programmers' 카테고리의 다른 글

[Java] 단체사진 찍기  (0) 2023.04.14
[Java] 2 x n 타일링  (0) 2023.04.13
[Python] 가장 긴 팰린드롬  (0) 2021.09.09
[Python] 기지국 설치  (0) 2021.09.09
[Python] 숫자 게임  (0) 2021.09.07