Algorithm

[BOJ] 14501. 퇴사

프로그래민 2020. 4. 14. 00:10
반응형

이 문제는 재귀를 사용하는 문제이다.

재귀를 함에 있어 1)선택하고 , 2)선택하지 않고를 기준으로 재귀를 반복하였다. 기저조건으로는 날짜 N의 범위를 넘어갈때를 체크하였다.

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package online.base;
 
 
public class Main_bj_14501_퇴사 {
    
    
    static int N;
    
    static Node[] list;
    static int max;
    
    
    static class Node{
        int day,money;
        Node(int d, int m){
            day=d;money=m;
        }
    }
    
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = null;
        
        N=Integer.parseInt(br.readLine());
        list=new Node[N];
//        list[0]=new Node(0, 0);
        for(int i=0;i<N;i++) {
            st=new StringTokenizer(br.readLine());
            list[i]=new Node(Integer.parseInt(st.nextToken())
                    ,Integer.parseInt(st.nextToken()));
        }
    
        
        max=0;
        func(0,0);
        
        System.out.println(max);
    }
    
    static void func(int sum,int curIndex) {
        if(curIndex>=N) {
            if(curIndex==N)
                max=Integer.max(max, sum);
            return;
        }
        
        max=Integer.max(max, sum);
        
        int spendDay=list[curIndex].day;
        int money = list[curIndex].money;
        
        func(sum,curIndex+1);                //현재점프
        func(sum+money, curIndex+spendDay);    //현재날짜추가
        
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
                                                   
반응형

'Algorithm' 카테고리의 다른 글

[BOJ] 14226. 이모티콘  (0) 2020.04.14
[BOJ] 15658. 연산자 끼워넣기(2)  (0) 2020.04.14
[BOJ] 1753. 최단경로  (0) 2020.04.12
[BOJ] 1922. 네트워크 연결  (0) 2020.04.12
[BOJ] 14888. 연산자 끼워넣기  (0) 2020.04.09