반응형
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/77885
문제 설명
정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.
- n은 1 이상 1,000 이하입니다.
문제접근 방식
- 문제를 풀면서 늘 생각하는것이지만 이차원 배열 참 다루기가 어려운것 같다. 그럼에더 문제는 풀어야하기 때문에
- 해설을 해보겠습니다.
- 문제가 어렵다기 보다는 어디서 회전을 시켜야하고 방향이 어떻게 줄건지를 생각해 내는게 핵심인 문제입니다.
- 사실 저도 되는데로 방향과 좌표를 설정을 해두었으며 답은 맞기는 했지만 코드가 가독성이 있지는 못합니다.
- 추후에 수정하도록 하겠습니다. 어쨌든 통과 ....
- 그리고 문제를 풀면서 배운게 있는데 python3 에는 itertools.chain()으로 배열울 flat 할수가 있습니다.
# 내코드
import itertools
def solution(n):
answer = []
t = [[0 for j in range(i+1)] for i in range(n)]
x, y = [0, 0]
point = 1
i, j = (0, 0)
direction = 'down'
while n > 0:
for _ in range(n):
t[x+i][y+j] = point
point += 1
if direction == 'down':
x += 1
elif direction == 'left':
y += 1
elif direction == 'up':
x -= 1
y -= 1
n -= 1
if direction == 'down':
direction = 'left'
x -= 1
y += 1
elif direction == 'left':
direction = 'up'
x -= 1
y -= 2
elif direction == 'up':
direction = 'down'
x += 2
y += 1
answer = list(itertools.chain(*t))
return answer
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
양궁게임 - 파이썬 (0) | 2022.07.31 |
---|---|
양과늑대 - 파이썬 (0) | 2022.07.31 |
2개 이하로 다른 비트 - 파이썬 (0) | 2022.06.26 |
괄호 회전하기 - 파이썬 (0) | 2022.06.26 |
멀쩡한 사각형 - 파이썬 (0) | 2022.06.16 |