자기개발👨‍💻/코딩 알고리즘

[python] 백준 2775 부녀회장이 될테야

천숭이 2021. 7. 29. 19:54

https://www.acmicpc.net/problem/2775

 

2775번: 부녀회장이 될테야

첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다

www.acmicpc.net

import sys
n = int(sys.stdin.readline())
for i in range(n):
    people = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
    k=int(sys.stdin.readline())
    n = int(sys.stdin.readline())
    for j in range(k):
        for k in range(1,n):
            people[k]+=people[k-1]

    print(people[n-1])


0층에서부터 쌓아올라가는 구조이므로 0층 리스트를 먼저 선언한다.

이중배열을 사용하지 않고 1차원 리스트를 사용한 이유는

해당 인덱스에 바로 전 인덱스만 더해서 갱신하면 되기 때문이다.

현재 인덱스와 직전 인덱스만 중요하기 때문에 입력받은 n까지만 덧셈을 진행하고 위층으로 올라가면 된다.

반복문 상단에 리스트 초기화하는 것이 중요!

k=3이고 n=6일때 연산이 필요한 곳 표시

 

<층과 호를 입력받고 반복해야할 행동>
층만큼 반복 :
   호만큼 반복 :
        해당 인덱스와 전 인덱스 더하기