본문 바로가기

프로그래머스, 백준

백준 2775번 부녀회장이 될테야

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

 

  • a층 b호에 살려면 a-1층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다.
  • 아파트는 0층부터 있고 각층에는 1층부터 있으며, 0층의 i호에는 i명이 산다.
  • k층에 n호에는 몇 명이 살고 있는지 출력

이 조건을 생각하면서 문제에 접근했다.

 

일단 층과 방 수를 출력 받아야 하고, 

0층에 사는 거주민들의 수가 i호에는 i명으로 정해져 있으므로 0층 거주민들을 리스트화해야겠다고 생각했다.

인덱스가 증가할 때마다 그 전까지의 수를 더하면 

1 5 15 25
1 4 10 20
1 3 6 10
1 2 3 4

 

이런 식으로 각 호수에 사는 거주민들의 수를 얻을 수 있다.

출력할 때는 마지막 요소를 출력해야 하므로 -1을 출력해야 한다.

코드에 추가적인 주석을 달아놨다.

T = int(input())

for _ in range(T):
    # 층수 입력
    k = int(input())
    # 호수 입력
    n = int(input())
    
    # 0층의 각 호수에 사는 사람 수를 리스트에 저장
    # 각 호수의 사람 수는 호수 번호와 같음
    floor_0 = [i for i in range(1, n+1)]
    
    # 각 층별로 반복
    for _ in range(k):
        # 해당 층의 각 호수에 대해 반복
        for j in range(1, n):
            # 현재 호수의 사람 수에 이전 호수까지의 사람 수의 합을 더함
            floor_0[j] += floor_0[j-1]
    
    print(floor_0[-1])

 

'프로그래머스, 백준' 카테고리의 다른 글

백준 2231번 분해합  (0) 2024.05.08
백준 9095번 1,2,3 더하기  (1) 2024.05.01
백준 2629번 양팔저울  (0) 2024.04.02
백준 1520번 내리막길  (0) 2024.04.02
1주차_공배수  (0) 2024.03.27