1차 시도
배열을 펼치는 방법으로 접근하였다. 하지만 TLE!
n이 너무 크다. 이런 방식으론 안되지만, 1차 풀이에서 아이디어를 얻을 수 있다.
def solution(n, left, right):
array = [[0 for _ in range(n)] for _ in range(n)]
for i in range(n):
for j in range(n):
array[i][j] = max([i, j]) + 1
# 2D -> 1D 로 펼치는 방법 알아두자!
array_join = []
for cur_arr in array:
array_join += cur_arr
return array_join[left:right+1]
2차 시도
우리는 이미 배열을 만들면서, 행과 열의 번호를 보고 들어갈 숫자를 구했다.
배열이 잘리면서 들어갈 때, 책 읽는 순서로 인덱스를 부여한다. 따라서 그냥 n으로 나누면 몇 행 몇 열인지 구할 수 있다.
O(n)으로 해결되는 케이스다. 구석에서 나머지 처리를 신경써주자. 0으로 시작하고, 0번 열로 돌아오니까
def solution(n, left, right):
answer = []
for i in range(left, right+1):
row = i // n
col = i % n
val = max([row, col]) + 1
answer.append(val)
return answer
'알고리즘 & PS' 카테고리의 다른 글
[프로그래머스] 가장 먼 노드 (Lv 3) 2트 (0) | 2024.10.28 |
---|---|
[프로그래머스] 의상 (Lv 2) (1) | 2024.10.28 |
[프로그래머스] 석유 시추 (Lv 2) (0) | 2024.10.27 |
[프로그래머스] 거리두기 확인하기 (Lv 2) (0) | 2024.10.27 |
[프로그래머스] 마법의 엘리베이터 (Lv 2) (0) | 2024.10.27 |