본문 바로가기
알고리즘?/swea d2

swea 2005. 파스칼의 삼각형

by 몰라닉네임 2023. 5. 16.

[문제]

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5P0-h6Ak4DFAUq&categoryId=AV5P0-h6Ak4DFAUq&categoryType=CODE&problemTitle=&orderBy=INQUERY_COUNT&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

[풀이]

무언가를 출력하고 채워나가는 문제가 있다면 행에 따른 규칙성을 찾아가는 방법인데 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() # 줄바꿈

[결과사진]

test_case 9, 10은 생략 캡쳐 생략

 

'알고리즘? > 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