smooth waters run deep

1d-1c/BOJ

14501_퇴사 (JAVA)

yeon_11 2020. 11. 29. 13:53
 

14501번: 퇴사

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

www.acmicpc.net

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

public class Main {
	static int ans = 0;

	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;

		int n = Integer.parseInt(br.readLine());
		int[] time = new int[n];
		int[] money = new int[n];
		for(int i=0; i<n; i++){
			st = new StringTokenizer(br.readLine());
			time[i] = Integer.parseInt(st.nextToken());
			money[i] = Integer.parseInt(st.nextToken());
		}

		func(time, money, 0, 0);
		System.out.println(ans);
	}

	private static void func(int[] time, int[] money, int day, int sum){
		if(day >= time.length){
			ans = Math.max(ans, sum);
			return;
		}

		if(day+time[day] <= time.length)
			func(time, money, day+time[day], sum+money[day]); //n일차에 상담하는 경우

		func(time, money, day+1, sum); //n일차에 상담안하는 경우
	}
}

 

입력받은 기간을 하루하루 체크하며 그날 상담을 할 수 있는지 모든 경우를 확인한다.

 

n일차에 상담을 할건지/안할건지의 두 가지 경우를 함수로 돌리면 모든 경우를 확인할 수 있다.

 

 

'1d-1c > BOJ' 카테고리의 다른 글

13023_ABCDE (JAVA)  (0) 2020.12.03
14888_연산자 끼워넣기 (JAVA)  (0) 2020.11.29
6603_로또 (JAVA)  (0) 2020.11.28
11723_집합 (JAVA)  (0) 2020.11.25
10972_다음 순열 & 10973_이전 순열 (JAVA)  (0) 2020.11.24