하루에 한 문제

[BOJ-14501] 퇴사 -Java 본문

알고리즘/백준

[BOJ-14501] 퇴사 -Java

dkwjdi 2021. 1. 29. 22:17

https://www.acmicpc.net/problem/14501

 

14501번: 퇴사

첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다.

www.acmicpc.net

package 시뮬레이션_review;

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

public class 퇴사 {
	static int N,t[],p[],result;
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = null;
		
		N=Integer.parseInt(br.readLine());
		t=new int[N+1];
		p=new int[N+1];
		
		for(int i=1; i<=N; i++) {
			st=new StringTokenizer(br.readLine());
			t[i]=Integer.parseInt(st.nextToken());
			p[i]=Integer.parseInt(st.nextToken());
		}
		dfs(1,0);
		System.out.println(result);
	}
	private static void dfs(int day, int money) {
		if(day>=N+1) {
			result=Math.max(result, money);
			return;
		}
		
		for(int i=day; i<=N; i++) {
			if(day+t[i]<=N+1) dfs(day+t[i], money+p[i]);
			else dfs(day+t[i], money);
			day++;
		}
		
	}
	

}

소요시간 : 25분

 

시험감독과 마찬가지로 이런문제가 코테에 나온다면 너무 행복할듯...

 

그냥 DFS돌리면 바로 답이 나옵니다

 

DFS돌릴 때 좀 중요한게 만약 선택하지 않았따면 DAY를 1일 늘려줘야 합니다.

 

현재 DAY가 4인데 DAY4를 선택하지 않았다면 DAY를 1 늘려줘야 하기때문에 

 

DFS안의 포문의 가장 밑에 DAY++을 해줬습니다~

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

[BOJ-14503] 로봇 청소기 -Java  (2) 2021.01.31
[BOJ-14502] 연구소 -Java  (0) 2021.01.30
[BOJ-13458] 시험 감독 -Java  (0) 2021.01.29
[BOJ-14499] 주사위 굴리기 -Java  (1) 2021.01.27
[BOJ-2573] 빙산 -Java  (0) 2021.01.24
Comments