[프로그래머스_68645] 삼각 달팽이 Python 풀이
출처: 프로그래머스
문제
풀이
반시계 방향으로 삼각달팽이를 순서에 맞게 채워넣어 구현해주었습니다.
삼각형을 주어진 n의 크기로 0으로 초기화해주어 다음과 같이 만들어줍니다.
n=4일 때,
snail = [[0],
[0, 0],
[0, 0, 0],
[0, 0, 0, 0]]
i를 1씩 늘려주며 밑으로 내려가고, j를 1씩 늘려주며 오른쪽으로 이동하고, i와 j를 1씩 줄여주며 위로 올라가줍니다.
마지막에는 2차원 배열을 1차원 배열로 합쳐주어 return해줍니다.
코드
def solution(n):
snail = [[0 for _ in range(i)] for i in range(1,n+1)]
total = sum(range(1,n+1))
num, move = 1, n-1
i, j = -2, -1
while num <= total:
i += 2
j += 1
if num == total:
snail[i][j] = num
break
for _ in range(move):
snail[i][j] = num
num += 1
i += 1
for _ in range(move):
snail[i][j] = num
num += 1
j += 1
for _ in range(move):
snail[i][j] = num
num += 1
i -= 1
j -= 1
move -= 3
answer = []
for k in range(n): answer.extend(snail[k])
return answer
Leave a comment