1def solution(n, left, right):
2 answer = []
3 start = (left//n, left%n)
4 end = (right//n, right%n)
5
6 for i in range(start[0], end[0]+1):
7 line = [i+1]*(i+1) + [i for i in range(i+2, n+1)]
8 answer += line
9
10 return answer[start[1]:right-(start[0]*n)+1]
문제
- 정수 n, left, right가 주어진다
- n X n 크기의 2차원 배열을 만든다
- i=1,2,3..n에 대해서, 1행 1열부터 i형 i행까지 숫자 i로 채운다
- 1행, 2행.. n행을 모두 이어붙인 새로운 1차원 배열을 만든다
- 새로운 1차원 배열에서 left번째 숫자부터 right번째 숫자까지를 배열로 반환하라
- TC
- input
n : 3, left : 2, right : 5
- ouput
[3, 2, 2, 3]
- input
해결방법
- answer에 필요한 행만 계산하여 붙인다
- 반환할때 offset을 계산하여 slicing한 리스트를 반환한다