[문제]
[풀이]
무언가를 출력하고 채워나가는 문제가 있다면 행에 따른 규칙성을 찾아가는 방법인데 2가지 유형이 있다.
1. 이 문제처럼 행을 증가시키면서 그거에 따른 열의 규칙성을 채워나가는 유형이 있고
2. 달팽이 숫자 문제처럼 dir(direction)을 잡아서 상하좌우 필요한 방향별로 이동하면서 채워나가는 문제가 있다.
먼저 2차원 리스트를 0으로 패딩해준다.
n:4
1
1 1
1 2 1
1 3 3 1
(규칙) 우선 1행은 무조건 1이다.
i j
2 1~2
3 1~3
4 1~4
arr[i][j]=a[i-1][j-1]+a[i-1][j] # 한 행위의 왼쪽 값 + 한행위의 자기 바로 위의 값(j값 동일)
[소스코드]
import sys
sys.stdin=open("input.txt", "rt")
T=int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T+1):
n=int(input())
arr=[[0]*(n+1) for _ in range(n+1)] #0으로 패딩 5행5열
arr[1][1]=1 #1행 1열은 무조건 1이다.
for i in range(2,n+1): #2행부터 n까지
for j in range(1,n+1): #1일부터 n까지
arr[i][j]=arr[i-1][j-1]+arr[i-1][j]
print(f'#{test_case}')
for i in range(1, n+1):
for j in range(1,i+1):
print(arr[i][j], end=" ")
print() # 줄바꿈
[결과사진]
'알고리즘? > swea d2' 카테고리의 다른 글
swea 1954. 달팽이 숫자 (0) | 2023.05.16 |
---|---|
swea 2007. 패턴마디의 길이 (0) | 2023.05.16 |
swea 1926. 간단한 369게임 (숫자 쪼개기) (0) | 2023.05.15 |
swea 1204. 최빈수 구하기 (0) | 2023.05.15 |