본문 바로가기
백준

[백준] 2775번 : 부녀회장이 될테야 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 15.
728x90
반응형

 

 

2775번: 부녀회장이 될테야

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

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 테스트 케이스 개수를 입력받는다. T = int(sys.stdin.readline())
  3. 각 테스트 케이스 횟수만큼 반복하며 for _ in range(T)
  4. 층 수를 입력받고 k = int(sys.stdin.readline())
  5. 호 수를 입력받는다. n = int(sys.stdin.readline())
  6. 각 층과 호 수별 사람의 수를 리스트로 생성한다. n_people = list()
  7. 가장 기본이 되는 0층의 각 호 수별 사람의 수를 리스트로 묶어 추가한다. n_people.append(list(range(1, n + 1))) 
  8. 다음 1층부터 입력받은 층까지 반복한다. for i in range(1, k + 1)
  9. 모든 층의 1호는 1명이 거주하므로 1을 리스트로 추가한다. n_people.append([1])
  10. 다음 호 수부터 입력받은 호까지 반복하며 for j in range(1, n)
  11. 해당 층의 호 수에 거주하는 사람의 수를 구하여 추가한다. 사람의 수는 같은 층의 앞 호의 사람 수와 같은 호의 아래층 사람의 수를 더하면 된다. n_people[i].append(n_people[i - 1][j] + n_people[i][j - 1])
  12. 입력받은 층의 호까지 사람의 수를 모두 구했으면 해당 층과 호의 사람 수를 출력한다. print(n_people[k][n - 1])
반응형

3. 소스코드

import sys

T = int(sys.stdin.readline())

for _ in range(T):
    k = int(sys.stdin.readline())
    n = int(sys.stdin.readline())
   
    n_people = list()
    n_people.append(list(range(1, n + 1)))

    for i in range(1, k + 1):
        n_people.append([1])
        for j in range(1, n):
            n_people[i].append(n_people[i - 1][j] + n_people[i][j - 1])
            
    print(n_people[k][n - 1])
728x90
반응형