728x90
https://school.programmers.co.kr/learn/courses/30/lessons/68645
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🤔 문제분석
달팽이처럼 회전하면서 그래프를 그려야 하는 문제이다. 달팽이의 규칙을 분석하여 그래프를 그리면된다.
- 이동하는 순서는 아래 이동 → 오른쪽 이동 → 위로 이동 → 아래 이동 … 방식으로 이동한다.
- 이동하는량은 n이 6일때, 6 → 5 → 4 → 3 → 2 → 1 방식으로 이동한다.
위의 규칙을 기반으로 x, y 좌표계에서 생각해보면 아래의 방식으로 이동해야 원하는 그래프에 값을 채울 수 있다.
- 아래 이동 : (1, 0)
- 오른쪽 이동 : (0, 1)
- 위로 이동 : (-1, -1)
chain으로 모든 리스트를 flat 하게 만들어준다.
💻 코드
from itertools import chain
def solution(n):
move = [(1, 0), (0, 1), (-1, -1)]
def change_pos(pos):
if pos == 2:
return 0
else:
return pos + 1
temp = [[0] * (i+1) for i in range(n)]
pos = 0
y, x = 0, 0
start = 1
for i in range(n, 0, -1):
temp[y][x] = start
for _ in range(i-1):
start += 1
y, x = y + move[pos][0], x + move[pos][1]
temp[y][x] = start
pos = change_pos(pos)
y, x = y + move[pos][0], x + move[pos][1]
start += 1
return list(chain(*temp))
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 금과 은 (0) | 2024.05.12 |
---|---|
[프로그래머스] 트리 트리오 중간값 (0) | 2024.05.11 |
[프로그래머스] 기지국 설치 (0) | 2024.05.01 |
[프로그래머스] 스티커 모으기2 (0) | 2024.05.01 |
[프로그래머스] 멀쩡한 사각형 (1) | 2024.05.01 |