[BOJ/백준-Python]2775번 - 부녀회장이 될테야

2775번 - 부녀회장이 될테야

문제

평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다.

이 아파트에 거주를 하려면 조건이 있는데, “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

2
1
3
2
3

예제 출력 1

6
10

해결할 방법을 생각해보자.💡

문제를 해석해보자.

내가 만약 2층에 3호에 산다면, 1층의 1~3호에 사는 사람들의 수 만큼 사람을 데려와야한다.

0층은 호수만큼 인원이 살고있다고 한다. 그럼 다음과 같이 해석할 수 있다.

image

각 층의 호수별 충족해야하는 인원을 이렇게 볼 수 있다.

그럼 이제 코드를 짜보자.

제일 먼저 테스트 케이스의 수를 입력받고, 그만큼 반복문을 실행하도록 만들어주자.

T  = int(input())
for i in range(T):

이 문제에서 우리가 문제에서 가장 주의깊게 봐야하는 두가지다.

  1. 0층은 1호부터 시작하며, i호에는 i명이 살고있다는 점과.
  2. 호수 제한이 14까지라는 것(n<=14)

호수가 14호까지밖에 없기에 이 문제를 쉽게 풀 수 있다.

리스트 컴프리헨션을 사용해서 호수가 담긴 리스트를 만들어 주자.

	room = [x for x in range(1, 15)]

그리고 층수 k와 호수 n을 받아주자.

	k = int(input())
    n = int(input())

그리고 위에서 확인했듯이 이전 층수에 호수를 다 더한 값이 자신의 호수에 데려와야하는 인원이기 때문에, 반복문을 층수인 k번만큼 반복할 것이다.

	for i in range(k):

이중반복문을 사용할것이다. 왜냐하면 우리가 만들어놓은 호수 변수(room)은 이렇게 생겼다.

  • [1,2,3,4,5,6,7,8,9,10,11,12,13,14]

층이 올라갈수록 인덱스를 사용해 특정 자리의 값을 계속 바꿔주는 식으로 문제를 해결할 수 있기 때문이다.

그리고 반복문 안의 반복문은 1부터 시작한다. 왜냐하면, 위에서도 보았듯이 1호는 계속 1명만 데려와도 되기 때문이다. 인덱스를 사용할 것이므로 범주는 n까지.

		for j in range(1, n):

1호는 건너 뛰었고 2호부터 시작한다 했을 때, 이전 호수와 지금 호수를 더해서 room의 같은 자리(인덱스)에 저장해주는 식을 짜주면 된다.

			room[j] = room[j-1] + room[j]

그리고 입력받았던 호수 n에서 1뺀 값을 인덱스값으로 사용해서 출력하면 문제 해결!

	print(room[n-1])

코드💻

T = int(input())
for i in range(T):
    room = [x for x in range(1, 15)]
    k = int(input())
    n = int(input())
    for i in range(k):
        for j in range(1, n):
            room[j] = room[j-1] + room[j]
    print(room[n-1])

해결 로그

문제 푼 날짜 체크
2022-06-05
   
   
   
   

2022

[web]jQuery 복습 3

1 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 2

13 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 1

14 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리4

5 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리3

10 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리2

7 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리1

8 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]CSS 기초 정리

11 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]HTML 기초 정리

8 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[Pandas]pandas 연습

3 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑

2021

[Python기초]module

1 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑