[Python] 프로그래머스 - 삼각 달팽이
728x90
반응형
programmers.co.kr/learn/courses/30/lessons/68645
문제에서는 배열이 삼각형모양으로 주어져 있지만, 왼쪽정렬을 시켜주는게 문제푸는데 도움이 된다.
n이 4일때, 왼쪽 정렬을 시켜주면 배열의 모양은 다음과 같다.
1 |
0 |
0 |
0 |
2 |
9 |
0 |
0 |
3 |
10 |
8 |
0 |
4 |
5 |
6 |
7 |
방향을 꺾어야 하는 수를 보면 n = 4일때 4, 7, 9, 10 에서 꺾어줘야한다. 즉, 꺾는 빈도가 1씩 줄어들고 있음을 알 수 있다. (n = 6일때를 그려서 보면 확실하게 이해가 될듯..)
따라서 이중반복문을 돌며 res[x][y]에 num을 넣어주고 num은 1씩 증가시켜준다.
마지막엔 res의 0이 아닌 값들을 answer에 넣고 출력해준다.
def solution(n):
res = [[0] * n for _ in range(n)]
answer = []
x, y = -1, 0
num = 1
for i in range(n):
for j in range(i, n):
if i % 3 == 0: # 아래
x += 1
elif i % 3 == 1: # 오른쪽
y += 1
elif i % 3 == 2: # 위
x -= 1
y -= 1
res[x][y] = num
num += 1
for i in res:
for j in i:
if j:
answer.append(j)
return answer
728x90
반응형
'문제풀이 > Programmers' 카테고리의 다른 글
[Python] 프로그래머스 - 행렬 테두리 회전하기 (0) | 2021.04.28 |
---|---|
[Python] 프로그래머스 - 로또의 최고 순위와 최저 순위 (0) | 2021.04.27 |
[Python] 프로그래머스 - 이진 변환 반복하기 (0) | 2021.04.25 |
[Python] 프로그래머스 - 신규 아이디 추천 (0) | 2021.04.25 |
[Python] 프로그래머스 - 소수 만들기 (0) | 2021.04.13 |
TAGS.