Problem Solving/BOJ

1, 2, 3 더하기 (완전탐색, 실버3)

파피 2021. 8. 24. 12:34

문제 출처 : https://www.acmicpc.net/problem/9095

 

9095번: 1, 2, 3 더하기

각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.

www.acmicpc.net

 

#1. 설계 및 풀이

 

# 1,2,3 더하기

'''
1<= n < 11

완전탐색

n이 될때까지 재귀함수 호출하면서 1, 2, 3을 더하기
n이 되면 cnt 증가
cnt 출력

'''


def dfs(res, n) :
    global cnt
    
    if res == n :
        cnt += 1
        return

    for i in range(1, 4) :
        if res+i <= n :
            dfs(res+i, n)

for _ in range(int(input())) :
    n = int(input())
    cnt = 0

    dfs(0, n)

    print(cnt)

 

- 처음부터 완벽하게 코드 짜려고 하지말자

 

- 테스트에서 생각하지 못했던 부분이 있을 수 도 있다.

문제와 예제들을 보면서 어떻게 풀지 방법 설정, 시간복잡도 계산해서 확신이 들면

손코딩 먼저 해보고 예제 돌아가는지 확인하고 코드로 옮기자.

 

- 해당 문제는 점화식 사용해서 DP로도 풀 수 있다.