https://school.programmers.co.kr/learn/courses/30/lessons/87390
<내 코드 - 오답>
from itertools import chain
def solution(n, left, right):
list_n = [[0] * n for _ in range(n)]
for i in range(n):
for j in range(n):
list_n[i][j] = max(i, j) + 1
return (list(chain.from_iterable(list_n))[left:right+1])
-> 시간초과나서 장렬하게 사망.. 이차원리스트를 만들어서 그걸 또 1차원배열로 평탄화 시키는게 시간복잡도를 많이 잡아먹는 이슈가 생겼다.
max(row, col) + 1 을 통해 문제에서 요구하는대로 숫자를 집어넣는 아이디어지만 결국 1차원배열로 가져가아하기 때문에 다르게 생각해야한다.
<정해코드>
def solution(n, left, right):
answer = []
for i in range(left, right + 1):
# 행과 열의 인덱스 계산
row = i // n
col = i % n
# 2차원 배열의 규칙에 따라 값을 계산
answer.append(max(row, col) + 1)
return answer
2차원 배열의 행과 열의 인덱스를 구하기 위해 행은 i%n 열은 i // n 으로 접근하여 구하면 된다.
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers / Level2] 행렬의 곱셈 (1) | 2024.01.28 |
---|---|
[Programmers / Level2] 할인 행사 (2) | 2024.01.27 |
[Programmers / Level2] 연속 부분 수열 합의 개수 (0) | 2024.01.25 |
[Programmers / Level2] 귤고르기 (1) | 2024.01.24 |
[Programmers / Level2] N개의 최소공배수 (0) | 2024.01.23 |