https://school.programmers.co.kr/learn/courses/30/lessons/68645
나의 풀이
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):
if i % 3 == 0:
x += 1
elif i % 3 == 1:
y += 1
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
triangle 리스트를 만들어 이중 for문을 이용해 i % 3의 값을 기준으로 각 triangle에 num을 넣는다.
i % 3 == 0이면 x값을 증가시켜 아래로 값을 채우고,
i % 3 == 1이면 y값을 증가시켜 오른쪽으로 값을 채우고,
i % 3 == 2 이면 이후 위로 값을 채워나가며 num을 1씩 증가시킨다.
이때 3으로 연산하는 이유는 down, right, up 세 동작이기 때문이다.
'코딩테스트 > programmers (python)' 카테고리의 다른 글
Programmers / 2단계 / 연속된 부분 수열의 합 / python (0) | 2024.04.06 |
---|---|
Programmers / 2단계 / 큰 수 만들기 / python / 탐욕법(Greedy) (0) | 2024.04.04 |
Programmers / 3단계 / 두 큐 합 같게 만들기 / python / 2022 KAKAO TECH INTERNSHIP (0) | 2024.03.31 |
Programmers / 3단계 / 단속카메라 / python / 탐욕법(Greedy) (0) | 2024.03.29 |
Programmers / 3단계 / 등굣길 / python / 동적계획법(Dynamic Programming) (0) | 2024.03.28 |