
2775번: 부녀회장이 될테야
첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다
www.acmicpc.net
문제
평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다.
이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다.
아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다.
입력
첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다
출력
각각의 Test case에 대해서 해당 집에 거주민 수를 출력하라.
제한
1 ≤ k, n ≤ 14

1. 문제 접근 방식
각 층 별로 사람 수가 더해지는데에 일정한 규칙이 없다. (직접 하나씩 그려보면 확인할 수 있음)
그러므로 각 층 별로 사람 수를 더하고 사람 수가 더해진 아래 층의 정보를 활용하여 그 위의 층의 사람 수를 더할 수 있다.
0층에 대한 정보가 제공되었으므로 이것을 활용할 수 있어야 한다.
0층 사람 수를 리스트로 만든 후 매 층마다 이 리스트를 업데이트하는 방향으로 코드를 짜면 된다.
1) 우선 0층의 사람 수를 리스트로 만든다.
주어진 호 수(num)만큼 리스트에 추가하면 된다.
T = int(input())
for _ in range(T):
floor = int(input()) # 층 수
num = int(input()) # 호 수
# 0층 리스트 만들기
zero = []
for i in range(1, num+1):
zero.append(i)
2) 만든 0층 리스트를 주어진 층 수(floor)만큼 사람 수를 업데이트 한다.
업데이트 된 층 별 사람 수 리스트를 활용하여 다음 층의 사람 수를 업데이트할 수 있다.
for j in range(floor):
for n in range(1, num):
zero[n] += zero[n-1]
print(zero[-1])
층 별 사람 수 리스트(zero)의 인덱스로 호 수(num)을 활용하면 된다.
zero의 0번 인덱스는 늘 1로 동일하기에 1번 인덱스부터 num-1번 인덱스까지 차례로 이전의 수를 하나씩 더해주면 된다.
이렇게 매 층마다 업데이트된 리스트에서 가장 마지막 수가 num호이므로 마지막 수를 출력한다.
2. 풀이 코드
T = int(input())
for _ in range(T):
floor = int(input())
num = int(input())
# 0층 리스트 만들기
zero = []
for i in range(1, num+1):
zero.append(i)
# floor층까지 한 층씩 사람수 업데이트
for j in range(floor):
for n in range(1, num):
zero[n] += zero[n-1]
print(zero[-1])
3. 참고 코드
백준 2775번 [파이썬 알고리즘] 부녀회장이 될테야
[Python] 백준 알고리즘 온라인 저지 2775번 : 부녀회장이 될 테야 Python3 코드 t = int(input()) for _ in range(t): floor = int(input()) # 층 num = int(input()) # 호 f0 = [x for x in range(1, num+1)..
ooyoung.tistory.com
'코딩 테스트 > Python' 카테고리의 다른 글
[백준 코딩테스트(Python)] 기본 수학 2 - 소수 구하기 (에라토스테네스의 체) (0) | 2022.09.27 |
---|---|
[백준 코딩테스트(Python)] 기본 수학 2 - 소인수분해 (2) | 2022.09.23 |
[백준 코딩테스트(Python)] 기본 수학 1 - 분수찾기 (0) | 2022.09.05 |
[백준 코딩테스트(Python)] 기본 수학 1 - 벌집 (0) | 2022.09.05 |
[백준 코딩테스트(Python)] 문자열 - 그룹 단어 체커 (0) | 2022.08.31 |