공부/Algorithm

[백준 알고리즘-DFS or DP] 퇴사

Egomi 2017. 10. 19. 13:28

DFS 로 푸는 경우


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
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
 
public class Solution {
    static int n, max;
    static int[] t,p; // 기간 t, 수익 p
    public static void main(String[] args) throws FileNotFoundException {
        Scanner sc = new Scanner(new FileInputStream("C:\\Users\\SeonMi\\Desktop\\JavaTools\\Tools\\workspace\\SamsungGoGo\\sample_input.txt"));
        //Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        t = new int[n+1];
        p = new int[n+1];
        
        for(int i=1;i<n+1;i++){
            t[i] = sc.nextInt();
            p[i] = sc.nextInt();
        }
        max = 0;
        int pay;
        
        for(int i=1;i<n+1;i++){ // 1일부터 n일 까지 상담할 경우
            pay = p[i];
            dfs(i+t[i],pay); // 1+t[i]일 다음부터 상담   가능하다 
        }        
        
        System.out.println(max);
    }
    static void dfs(int day, int pay) {
        if(day<=n+1// 현재 날짜가 퇴사일 이전일 경우, 벌 수 있는 최대 금액 확인
            max = Math.max(max, pay);
        
        // 현재날짜부터 가능한 상담 일자 확인하기
        for(int i=day;i<n+1;i++){
            if(i+t[i]>n+1)
                continue;
            dfs(i+t[i], pay+p[i]);
        }
    }
}
 
cs


'공부 > Algorithm' 카테고리의 다른 글

최종정리  (0) 2017.10.20
[삼성 SW EA] 홈 방범 서비스  (0) 2017.10.20
[백준 알고리즘 - 백트래킹] 스도쿠  (0) 2017.10.18
비트마스크 사용해보기 (Java)  (0) 2017.10.17
[삼성 SW EA] N-Queen 백트레킹  (0) 2017.10.17