1. 문제
https://programmers.co.kr/learn/courses/30/lessons/68645
2. 풀이
[1]
[2][9]
[3][10][8]
[4][5][6][7]
- 피라미드는 위와 같은 방식으로 배열로 표현하였습니다.
- 1~3, 4~6, 7~9 처럼 3씩 증가할수록 삼각형 개수가 바뀝니다.
- 왼쪽변, 아래변, 우측변 기준으로 값을 채워 넣습니다.
# 1~3 | 4~6 | 7~9 처럼 3씩 증가할수록 삼각형 개수가 바뀜
def solution(n):
count = 1
r_cnt = 0
arr = [[0] * n for _ in range(n)]
while count < n*(n+1)/2:
# 해당 삼각형 크기에서 한 변을 채우는데 필요한 카운트
search_dist = n - 1 - 3 * r_cnt
# 삼각형 왼쪽변
for i in range(search_dist):
arr[r_cnt * 2 + i][r_cnt] = count
count += 1
# 삼각형 밑변
for i in range(search_dist):
arr[n - 1 - r_cnt][r_cnt + i] = count
count += 1
# 삼각형 오른쪽변
for i in range(search_dist):
arr[n - 1 - i - r_cnt][n - 1 - i - 2 * r_cnt] = count
count += 1
# 라운드 1 증가
r_cnt += 1
answer = []
for i in range(n):
for j in range(i+1):
# 가운데 딱 한 숫자만 들어갈 경우 0으로 채워져 있음. 마지막 숫자를 넣어줌
if arr[i][j] == 0:
answer.append(count)
else:
answer.append(arr[i][j])
return answer