728x90
https://school.programmers.co.kr/learn/courses/30/lessons/68645
- 풀이
- 삼각형이 반시계 방향으로 돌 때 이동방향
- 아래로 -> 오른쪽으로 -> 왼쪽 대각선 위로 -> 아래로 ...(반복)
- 삼각형 행번호, 열번호의 조건
- 0 <= 열번호 <= 행번호 < n
- 범위를 벗어날 때마다 방향 전환!
- 삼각형이 반시계 방향으로 돌 때 이동방향
def solution(n):
# 이동할 수 있는 방향
d = [[1,0],[0,1],[-1,-1]]
idx = 0
# 삼각형
arr = [[0]*i for i in range(1,n+1)]
arr[0][0] = 1
# 삼각형 요소 총 갯수
cnt = sum([i for i in range(1,n+1)])
# 들어갈 숫자 번호
num = 2
r,c = 0,0
while num <= cnt:
# 현 위치
cr = r + d[idx][0]
cc = c + d[idx][1]
# 삼각형 범위 안에 속하는가?
if 0 <= cc <= cr < n and arr[cr][cc] == 0:
arr[cr][cc] = num
num += 1
r = cr
c = cc
# 방향 전환
else:
idx = (idx+1)%3
# 결과
answer = []
for a in arr:
answer += a
return answer
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[백준] 1005. ACM Craft - Python (0) | 2023.03.03 |
---|---|
[프로그래머스] 불량 사용자 - Python (0) | 2023.03.02 |
[프로그래머스] 큰 수 만들기 - Python (0) | 2023.03.02 |
[230228] 소수 구하기(에라토스테네스의 체) - Python (0) | 2023.02.28 |
[230228] heapq (추가, 삭제, 리스트를 heap으로 변환) - Python (0) | 2023.02.28 |
댓글