본문 바로가기
Problem Solving/백준

[백준|파이썬] 2775: 부녀회장이 될테야 (브론즈1)

by 청량리 물냉면 2023. 4. 17.
반응형
문제

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

 

2775번: 부녀회장이 될테야

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

www.acmicpc.net

 

 

🐍파이썬
import sys
t = int(sys.stdin.readline())
for _ in range(t):
    k = int(sys.stdin.readline())  #k층
    n = int(sys.stdin.readline())  #n호
    apt = [[0]*(n+1) for _ in range(k+1)]
    for i in range(k+1):	#0층~k층
        for j in range(1, n+1):	#1호~n호
            if i == 0:	#0층
                apt[i][j] = j	#호실의 수만큼 사람이 입주(1호에는 1명, 2호에는 2명...)
            else:	#0층이 아닌 경우
                apt[i][j] = sum(apt[i-1][:j+1])	#이전 행의 1~j호의 사람수의 합
    print(apt[k][n])	#k층 n호의 사람수

 

 

다른 풀이 방법

from sys import stdin
t = int(stdin.readline())
cnt = 0

while cnt < t:
    k = int(stdin.readline())
    n = int(stdin.readline())
    array = [t for t in range(1, n+1)]

    for i in range(k):
        for j in range(1, n):
            array[j] += array[j-1]
    print(array[-1])
    cnt += 1

코드 실행 과정

...
while cnt < t:
    ...
    array = [t for t in range(1, n+1)]
    print(array)

    for i in range(k):
        for j in range(1, n):
            array[j] += array[j-1]
            print(array)
    print(array[-1])
    cnt += 1

 

프린트문으로 연산을 거칠 때마다 array가 어떻게 변하는지 콘솔창에 찍어보았다. 결과는 아래와 같다.
[1, 2, 3] 👉 array = [t for t in range(1, n+1)]
[1, 3, 3]
[1, 3, 6]
6 👉 print(array[-1])
[1, 2, 3] 👉 array = [t for t in range(1, n+1)]
[1, 3, 3]
[1, 3, 6]
[1, 4, 6]
[1, 4, 10]
10 👉 print(array[-1])

1차원 배열만으로 해결할 수 있는 문제였다...

반응형