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 |