[Python]BaekJoon.AC

[Python]백준 BaekJoon.AC 2775 : 부녀회장이 될테야(2차원 리스트)

스뇨잉 2022. 1. 6. 01:27
728x90
728x90

 

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

 

2775번: 부녀회장이 될테야

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

www.acmicpc.net

 

 

이번 문제는 2차원 리스트를 시도해봤다!

리스트 안에 리스트를 넣는다고 말할 수 있다.

(이 문제에서 그러진 않았지만, 열마다 행의 개수를 자유자재로 설정할 수 있음은 정말 큰 편리함이다.)

바깥 리스트를 층수, 안쪽 리스트를 호라고 설정해줬다.

 

리스트를 생성하고 먼저 for문을 이용해 0층 사람수를 깔아줬다.(k)

0층부터 flo층까지 있고, 0호부터 uni-1호까지 있는 셈이다.

그러나 0호를 1호로 생각하기로 하는, 그런 리스트 형식이다. 따라서 uni-1호가 uni호다.

 

그리고 1부터 입력된 층수까지 훑는 for문(m)을 생성하고, 내부엔 그 층마다 호를 방문해주는 for문(n)을 만들었다.

 

한집씩 훑을 때마다 밑층 사람 수와 직전 집 사람 수를 더해줬다.

이때, 1호는 무조건 1의 값을 가지고 직전 집이 없으니 1을 그냥 넣어준다.

 

 

T = int(input())

for i in range(T):
    flo = int(input())
    uni = int(input())
    list = [[]]

    for k in range(1, uni+1):
        list[0].append(k)

    for m in range(1, flo+1):
        list.append([])
        for n in range(uni):
            if n == 0:
                list[m].append(1)
            else:
                list[m].append(list[m-1][n] + list[m][n-1])

    print(list[flo][uni-1])
728x90
728x90