알고리즘
프로그래머스 Lv. 2 삼각 달팽이 Python
스위태니
2024. 1. 3. 22:29
728x90
문제 링크
https://school.programmers.co.kr/tryouts/72049/challenges
정답 코드
def solution(n):
top = [[0 for _ in range(n)] for _ in range(n)]
number = 1
cnt = n
ifd = [0, 1, 2]
direction = 0
startIndex = 0
endIndex = n
# index 증가, 고정, 감소, 증가, 고정, 감소
while cnt:
cnt -= 1
d = ifd[direction]
if d == 0:
for idx in range(startIndex, endIndex):
top[idx][startIndex] = number
number += 1
startIndex += 1
elif d == 1:
for jdx in range(startIndex, endIndex):
top[endIndex-1][jdx] = number
number += 1
endIndex -= 1
else:
for idx in range(endIndex-1, startIndex-1, -1):
top[idx][endIndex] = number
number += 1
startIndex += 1
direction = (direction + 1) % 3
answer = []
for idx in range(n):
for jdx in range(n):
number = top[idx][jdx]
if number:
answer.append(number)
return answer
풀이 방법
- dp로 풀 수도 있지만 그러려면 조금 더 설계를 해야 하고 오래 생각해야 했기에 While문으로 접근했다.
- 단순하게 왼쪽은 아래로 내려가면서 top 리스트에 넣는다.
- 다 내려가면 startIndex를 + 1
- 다음은 하단, columnIndex를 늘려가면서
느낀점
- 그다지 어렵지는 않았다.
728x90