상세 컨텐츠

본문 제목

백준 2275번 <부녀회장이 될테야> [파이썬]

백준

by 덴마크 당나귀 2022. 7. 21. 14:09

본문

728x90

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

 

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 복사

2
1
3
2
3

예제 출력 1 복사

6
10

 

출처

 
 
이 문제를 생각했을 때 크기를 제한하는 수도 작아서 2차원 배열을 다 만들어볼까 했지만, c와는 다른 방식이라
2차원 자체를 만드는 것이 나한텐 어려움 이였다.
그래서 진짜 이 문제만 한 2시간은 넘게 고민한 것 같다 ㅠㅠㅠ
그렇지만, 코테를 이미 공부하신 분들의 조언을 통해 포기하지말고 진짜 너무 어렵다면 다른 방식으로 생각해보고
다른 사람들 풀이를 보고 이해해서 나아가는 것도 좋은 방법이라고, 포기하지 않고 쭉 계속 문제를 풀다보면
늘어있다고 하길래 한번 검색해보고 이해한 후 문제를 풀었다
 
 
t = int(input())

for i in range(t):
    floor = int(input())
    ho = int(input())
    cnt = [i+1 for i in range(ho)]

    for j in range(floor):
        for k in range(1,ho):
            cnt[k] += cnt[k-1]
    print(cnt[-1])

 

 

그래서 이렇게 문제를 풀었다.

이렇게 풀기전엔 한 20-30줄은 그냥 넘어갔는데, 결국 파이썬이 파이썬 한 것 같다..

겨우 공백빼면 10줄이다.

역시 생각보다 파이썬은 너무 어렵다.

각설하고 일단 푼 방식은 우선 입력을 받고 

cnt리스트를 변수 ho에 맞게 1부터 ho까지 수를 리스트에 넣어주고 그다음 그 한개의 리스트를 

업데이트 하는 식으로 전개했다.

 

변수 floor로 층수만큼 반복해주고 리스트 0번은 다 1로 고정이므로 인덱스 값 1부터 바꿔갔다.

해당 인덱스 값이 바로 뒤 해당하는 값에 추가되는 방식으로 리스트를 수정해나갔다.

그리고 리스트의 마지막 인덱스 값을 추출하는 -1로 인덱스를 지정해 출력하는 방식으로 햇다.

 

정말 헷갈렸다.

수학적인 규칙이 정말 글로 써가면서 해도 보이지가 않았다.

코테에서도 이런 문제를 만나면 쉽지 않겠지만, 지금은 아직 많이 부족한 것을 알기에 앞으로 1달 

꼭 100문제 이상은 풀고싶다. 그래서 진짜 꾸준히 실력을 키워나가야겠다.

이렇게 다시 복기 하면서 조금이라도 흡수되었으면 좋겠다

화이팅!

728x90

관련글 더보기