Notice
Recent Posts
Recent Comments
Link
S E P H ' S
[Python] n^2 배열 자르기 본문
코딩테스트 연습 - 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 |