알고리즘/백준

9095번 - 1, 2, 3 더하기

fleur75 2023. 6. 20. 21:01

1️⃣ DFS

 

✏️ 풀이 과정

DP문제라고 되어있으나 n이 최대 11로 작기 때문에 DFS로도 빠르게 해결할 수 있습니다.

 

0부터 시작해서 입력+1, 입력+2, 입력+3으로 재귀적으로 DFS를 실행하면서 숫자가 n보다 같거나 클 때 리턴하고 같은 경우를 카운팅해주면 됩니다.

 

💻 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	
	static int n;
	static int cnt;
	
	static void dfs(int N) {
		if(N >= n) {
			if(N == n) {
				cnt++;
			}
			return;
		}
		dfs(N+1);
		dfs(N+2);
		dfs(N+3);
	}
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int T = Integer.parseInt(br.readLine());
		StringBuilder sb = new StringBuilder();
		for(int t=0;t<T;t++) {
			n = Integer.parseInt(br.readLine());
			cnt = 0;
			dfs(0);
			sb.append(cnt+"\n");
		}
		System.out.print(sb);
		br.close();
	}
}