개발 연습장/백준 문제풀이

[파이썬, Python] 백준 2775: 부녀회장이 될테야

LooanCheong 2022. 12. 17. 15:19
반응형

문제

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

 

2775번: 부녀회장이 될테야

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

www.acmicpc.net

코드

t = int(input())

for _ in range(t):
    k = int(input())
    n = int(input())
    people = [i for i in range(1, n+1)]
    for _ in range(k):
        for x in range(1, n):
            people[x] += people[x-1]
    print(people[-1])

설명

문제가 직관적으로 이해하기 어려웠는데 그림을 그려서 생각하니까 조금 편했다.

0층에는 [1, 2, 3, 4,...] 이런 식으로 사람이 살고,
1층에는 [1, 3, 6, 10, ...]
2층에는 [1, 4, 10, 20,...] 이런 식으로 아래층의 자신의 호수만큼의 사람이 살아야 한다는 조건이다.

문제를 풀기 위해 우선 people이라는 리스트를 만들어 각 층의 사람을 배치해주었다.
이렇게 되면 0층의 리스트가 완성된다.

이후 k번 동안 이 리스트에 변화를 주게 되는데,
x번째에 있는 수에 x-1번째의 수를 더해주게 된다.
예를 들어 1층을 만들기 위해 2였던 기존의 2호에 1을 더해 3을 만들어주고,
3이었던 기존의 3호에 3을 더해 6을 만드는 식이다.

이렇게 k 번 반복하고 가장 마지막 수를 출력하면 된다.

반응형