프로그래머스/Lv.2
월간 코드 챌린지 시즌1 > 삼각 달팽이 - Python, 구현
아찌방
2024. 12. 17. 20:41
https://school.programmers.co.kr/learn/courses/30/lessons/68645
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
코드 & 풀이
def solution(n):
snail = [[0] * n for _ in range(n)]
direction = [(1, 0), (0, 1), (-1, -1)]
x, y, num = -1, 0, 0
for i in range(n):
dx, dy = direction[i%3]
for j in range(n - i):
x += dx
y += dy
num += 1
snail[x][y] = num
return [value for row in snail for value in row if value != 0]
달팽이의 움직임은
아래로, 오른쪽으로, 대각선 왼쪽으로
이렇게 3가지 입니다.
2차원 리스트를 기준으로
아래는 (+1, 0),
오른쪽은 (0, +1),
대각선 왼쪽은(-1, -1)
입니다.
그리고 한 방향으로 움직이는 횟수는
주어진 n 부터 -1씩 줄어듭니다.
첫번째 반복문은 취향에 따라서 n부터 -1 해도 되고
저처럼 0부터 n까지 해도 됩니다.
그러면 두번째 반복문은 n - i 또는 i가 되겠죠.
그렇게 구한 이중 리스트를
0을 제외한 값들을 한 곳으로 모으면
우리가 원하는 결과를 얻을 수 있습니다.
728x90