https://programmers.co.kr/learn/courses/30/lessons/68645
"""
1. 아이디어
2. 시간복잡도
"""
def solution(n):
triangle = [ [0] * n for _ in range(n) ]
answer = []
x, y = -1, 0
num = 1
for i in range(n):
for j in range(i, n):
# Down
if i % 3 == 0:
x += 1
# Right
elif i % 3 == 1:
y += 1
# Up
elif i % 3 == 2:
x -= 1
y -= 1
triangle[x][y] = num
num += 1
for i in range(n):
for j in range(i+1):
answer.append(triangle[i][j])
return answer
이 문제의 핵심은 이중 반복문을 통해 Down, Right, Up하는 i % 3 == ? 구문을 작성할 수 있는지 인 것 같습니다.
만약 n = 4 일때, 첫번째 반복할때는 4번 Down, 두번째 반복할때는 3번 Right, 세번째 반복할때는 2번 Up, 4번째 반복할때는 1번 Down 입니다.
이 과정에서 x, y 좌표를 계속 갱신하여 숫자(num)가 채워지도록 설정해야 합니다.
자세한 설명 보다는 직접 그림을 그려보면 쉽게 이해가 될 수 있으니 직접 그려보는게 좋습니다.
X