ps | |
---|---|
링크 | programmers.co.kr/… |
출처 | 프로그래머스 |
문제 번호 | 68645 |
문제명 | 삼각 달팽이 |
레벨 | Level 2 |
분류 |
구현 |
시간복잡도 | O(n^2) |
인풋사이즈 | n<=1000 |
사용한 언어 | Python |
해결날짜 | 2020/12/17 |
"""Solution code for "Programmers 68645. 삼각 달팽이".
- Problem link: https://programmers.co.kr/learn/courses/30/lessons/68645
- Solution link: http://www.teferi.net/ps/problems/programmers/68645
"""
def solution(n):
step_d, step_r, step_u = n, 1, -(n + 1)
next_step = {step_d: step_r, step_r: step_u, step_u: step_d}
answer = [0] * (n * n)
step = step_d
index = 0
answer[index] = 1
for i in range(2, n * (n + 1) // 2 + 1):
if index + step >= len(answer) or answer[index + step]:
step = next_step[step]
index += step
answer[index] = i
return [x for x in answer if x]