Algorithm/Implementation

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

안드선생 2021. 10. 1. 16:07
반응형

문제 설명

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

평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다.

이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다.

아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다.


풀이 과정

먼저 0층 n호에는 n명이 살고 있으므로 0층은 [ 1, 2, 3, 4, 5... ]으로 설정을 해준다.

1층의 n호에는 0층 1호 ~ n호까지의 사람수만큼 살고 있으므로 sum(0층의 1호~n호)가 되며

2층의 n호에는 1층 1호 ~ n호까지의 사람수만큼 살고 있으므로 sum(1층의 1호~n호)가 된다.

 

이렇게 1층부터는 이전층의 사람수들을 누적으로 합해감을 알 수 있다.

 

이를 파이썬으로 나타낸 코드는 다음과 같다.

t = int(input())

for _ in range(t):
    k = int(input())
    n = int(input())
    graph = [[0]*n for _ in range(k+1)]

    graph[0] = [i+1 for i in range(n)]

    for i in range(1, k+1):
        for j in range(n):
            graph[i][j] = sum(graph[i-1][:j+1])

    print(graph[k][n-1])

https://github.com/HongEunho

전체 문제 & 코드는 위의 깃에 정리되어 있습니다.

팔로우 & 맞팔은 환영입니다 !

반응형