😁 빅데이터 문제 풀기 & Study/- BAEKJOON 문제

[2775번] 부녀회장이 될테야 / python3 (방법 2가지)

또방91 2021. 11. 17. 11:56
728x90

문제 링크: https://www.acmicpc.net/problem/2775

 

2775번: 부녀회장이 될테야

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

www.acmicpc.net

제목에서처럼 방법2가지라고 쓴 이유는

예전에 풀어봤었는데, 제출을 안했어서 안 푼문제로 되어있었음

다시 문제를 풀어봤는데, 다른 방법으로 풀었던 거 아니겠음??


❓ 정답은 ??

방법 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import sys
 
t=int(sys.stdin.readline())
 
for _ in range(t):
    k=int(sys.stdin.readline())
    n=int(sys.stdin.readline())
#2차원 리스트를 만들고 0층은 apt[0]에 있음
    apt=[[0,1for i in range(k+1)]

#0충 기본 세팅
    for a in range(2,n+1):
        apt[0].append(a)
    
    for floor in range(1,k+1):
        for room in range(2,n+1):
            x=apt[floor][room-1]+apt[floor-1][room]
            apt[floor].append(x)
                   
    print(apt[k][n])
cs

방법2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
= int(input())
for i in range(t):
    floor = int(input())
    room = int(input())
 
    base = [j for j in range(1, room+1)] #0층 각 호수의 인원 리스트
 
    # 층수만큼 반복
    for k in range(floor):  
        #이전리스트에다가 하나씩 덮어쓰기로 넣어서 리스트 만들기   
        for n in range(1,room):   
            base[n]=base[n]+base[n-1]
    
    print(base[-1])
 
cs

💯 풀이 과정

방법 1

1) apt를 2차원리스트를 만든다. 0층은 apt[0]에 있고 1층은 apt[1]에 있고

2) 원하는 값이 현재층 앞 호수 + 아래층 같은 호수 사람을 더한 것이기에

3) 반복문을 0부터 시작하면 아래층이 없어서 1층부터 반복문 돌리기

4) 0층은 그 전에 미리 세팅

 

방법2

1) base라는 0층 리스트 만들기

2) 반복문으로 1층부터 구하는데 이때는 덮어쓰기로 base리스트에 넣어주기

3) 나중에 base[-1]을 구하는 이유는 가장 마지막 오른쪽값이 우리가 원하는 값이니까


😎오늘의 한줄평: 다시 풀어도 방법은 다르구낭

728x90