https://school.programmers.co.kr/learn/courses/30/lessons/68645
코드 & 풀이
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
'프로그래머스 > Lv.2' 카테고리의 다른 글
124 나라의 숫자 - 구현, 수학(?) (1) | 2024.12.20 |
---|---|
마법의 엘리베이터 - Python, 구현 (1) | 2024.12.18 |
연속된 부분 수열의 합 - Python, 부분합, 슬라이딩 윈도우 (0) | 2024.12.16 |
2023 KAKAO BLIND RECRUITMENT > 택배 배달과 수거하기 - Pyton, 구현 (1) | 2024.12.09 |
2023 KAKAO BLIND RECRUITMENT > 이모티콘 할인행사 - Python, product, 조합 (0) | 2024.11.23 |