티스토리 뷰

1) 생각

숫자 n이 주어지면 1, 2, 3을 더해가면서 n이 만들어 질 수 있는 개수를 구하여라.


처음 생각

문제 분류를 보면 다이나믹 프로그래밍으로 되어있으나 n의 범위가 11보다 작으므로 완전 탐색을 이용해서 풀었다.


2) 방안

더하고 있는 값이 n보다 커질 경우 탐색에 의미가 없으므로 return 해주었다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.io.IOException;
import java.util.Scanner;
 
public class Main{
    static int n;
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        int tc = sc.nextInt();
        for(int i=0;i<tc;i++) {
            n = sc.nextInt();
            result = 0;
            solve(0);
            System.out.println(result);
        }
    }
    
    static int result = 0;
    private static void solve(int t) {
        if(t>n) return;
        if(t==n) {
            result++;
            return;
        }        
        // 1 더하기
        solve(t+1);
        // 2 더하기
        solve(t+2);
        // 3 더하기
        solve(t+3);
    }
}
cs


'알고리즘 > 백준' 카테고리의 다른 글

[백준] 9663번 N-Queen  (0) 2018.08.22
[백준] 14501번 퇴사  (4) 2018.08.22
[백준] 14889번 스타트와 링크  (0) 2018.08.22
[백준] 14888번 연산자 끼워넣기  (4) 2018.08.22
[백준] 6603번 로또  (0) 2018.08.21
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday