728x90
📌 문제
https://programmers.co.kr/learn/courses/30/lessons/68645
📌 문제 접근 방법
- 각 행마다 행번호에 +1한만큼 0을 채워서 2차원 배열 snail을 생성한다.
- 삼각형을 보면 처음에는 n개의 숫자가 아래 방향으로 채워지고, 그 다음은 n-1개의 숫자가 왼쪽 방향, 그 다음은 n-2개의 숫자가 위쪽 방향으로 채워진다.
- 즉, 방향은 무조건 아래->왼쪽->위 이고, 채워지는 숫자의 개수는 1씩 줄어든다.
- 이를 코드로 옮기면, 맨 처음은 무조건 아래로 내려가므로 i를 -1로 초기화한다.
- 0부터 n까지 순회하며 n-m+1개의 숫자가 채워지므로 범위를 range(m, n)으로 설정한다.
- 방향을 바꿔가며 숫자를 채우고 2차원 배열을 쭉 나열하여 출력하면 된다.
📌 코드
def solution(n):
snail = [[0 for _ in range(i+1)] for i in range(n)]
num = 0
i = -1
j = 0
for m in range(n):
for _ in range(m, n):
if m%3 == 0: #아래
i += 1
elif m%3 == 1: # 왼쪽
j += 1
else: # 위
i -= 1
j -= 1
num += 1
snail[i][j] = num
answer = []
for row in snail:
answer += row
return answer
728x90
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[PG/Python] 캐시 (0) | 2022.03.03 |
---|---|
[PG/Python] N-Queen (0) | 2022.02.27 |
[PG/Python] 단속카메라 (0) | 2022.02.27 |
[PG/Python] 아이템 줍기 (0) | 2022.02.06 |
[PG/Python] 징검다리 건너기 (0) | 2022.02.06 |
댓글