본문 바로가기
개발/Coding Test - Python

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

by seopport 2023. 6. 21.
728x90
반응형

백준 코딩테스트 - 융과 함께 Python
백준 코딩테스트 - 융과 함께 Python

 

백준 홈페이지 문제와 개인적인 풀이를 작성한 글입니다.

 

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

 

2775번: 부녀회장이 될테야

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

www.acmicpc.net

반응형

 


문제를 풀기 전에,

필자는 솔직히 읽으면서, '오 쉬운데?' 라는 생각을 했지만 구현하지 못했습니다.
( 사실 맨 처음에는 문제 이해하는 것에 시간을 많이 썼습니다. - 무슨 말이지 이게.. 하면서 하하..)


이해가 되고 피보나치 수열과 비슷한데 어떻게 구현하지? 라는 생각을 하며 반성을 하였습니다.
구현이라는 문제는 참 생각으로는 간단할지 몰라도 구현을 하지 못하는 자기 자신을 반성할 수 밖에 없는 것 같습니다.
반성하면서 한 줄 적어봅니다. :)

 

아파트에 다음과 같이 살고 있다고 생각하시면 이해에 도움되실 것 같습니다.

 

2층 1 4 ( 1 + 3 )  10 ( 1 + 3 + 6)  20 ( 1 + 3 + 6 + 10) 
1층 1 3 ( 1 + 2 ) 6 ( 1 + 2 + 3) 10 ( 1 + 2 + 3 + 4)
0층 (i 호에 i 명) 1 2 3 4

 

문제

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

이 아파트에 거주를 하려면 조건이 있는데, “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 예제 출력 1
2
1
3
2
3
6
10

 

내 코드 - 실패 (다른 분 코드 참고)

# 2775번 부녀회장이 될테야

n = int(input());

for _ in range(n):
  # 층 호 각각 받기
  floor = int(input());
  room = int(input());

  base = [i for i in range(1, room + 1)];
  for i in range(floor):
    for j in range(1, room):
      base[j] += base[j -1];
  print(base[-1]);

 

문제를 풀면서, 왜 base로 선언되어 있는 배열만 사용했지 ? 

라고 생각하신다면, 필자와 동일하게 생각한 겁니다.

필자도 초반에는 이해하지 못했고, 저렇게 해야하는 이유가 뭘까 라는 생각을 해서 print 를 찍어봤습니다.

 

문제에 나온 것 처럼 0층 각 호실 마다 1 2 3 4 로 들어가 있습니다.

맨 처음 예신인 floor = 1 / room = 3 이 들어왔습니다.

# 2775번 부녀회장이 될테야 - 풀이

base = [i for i in range(1, 4 + 1)];
# 1 2 3 4

for i in range(1): # floor 
  for j in range(1, 4): # 1 2 3
    base[j] += base[j -1];
    print(*base);
    # 1 번
    # 1 3 3 4
    
    # 2번
    # 1 3 6 4
    
    # 3번
    # 1 3 6 10

 

이해가 조금이라도 되셨을까요?

그렇다면 다른 문제 풀러 가시지오!

 

728x90
반응형