알고리즘/백준

백준 2884: 부녀회장이 될테야 (Python)

sssbin 2021. 8. 30. 17:19

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

 

2775번: 부녀회장이 될테야

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

www.acmicpc.net

 

실패 흔적이 매우 많음,,

처음엔 당연히 재귀로 풀어야지라고 생각했다

재귀 어려워해서 재귀로 푸는 알고리즘 생각하는 것도 엄청 오래 걸림 ㅜㅜ

 

def res(k, n):
    result = 0

    for i in range(n):
        if k == 1:
            result += n * (n + 1) // 2
            break

        result += res(k-1,i+1)

    return result

t = int(input())

for i in range(t):
    k = int(input())
    n = int(input())
    result = 0

    for i in range(n):
        if k==1:
            result += n * (n + 1) // 2
            break

        result += res(k-1,i+1)

    print(result)

 

근데 시간 초과가 났다..!! 

그래서 다시 풀었는데

 

def res(k, n):
    if k == 0:
        return n

    result = 0

    for i in range(n):
        result += res(k-1,i+1)

    return result

t = int(input())

for i in range(t):
    k = int(input())
    n = int(input())
    result = res(k,n)

    print(result)

 

여전히 시간 초과 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

그래서 재귀함수로 풀면 안 되는구나,, 깨닫고 다시 두뇌 풀가동

 

t = int(input())

for i in range(t):
    k = int(input())
    n = int(input())
    result = [i+1 for i in range(n)]

    for i in range(k-1):
        for j in range(1,n):
            result[j] += result[j-1]

    print(sum(result))

 

이렇게 간단했다니 ㅠㅠ

 

 

거의 낙서장...ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

결국 저 빨간 네모가 문제 푸는데 쓴 알고리즘이다..ㅎ