728x90
백준 14501번 퇴사 : https://www.acmicpc.net/problem/14501
보자마자 DP 문제라고 느낌이 왔지만,
dfs로 더 쉽게 풀 수 있을 듯 해서 dfs로 풀게 되었다.
삼성 SW 역량테스트 기출 문제라고 해서 풀어봤는데, 생각보다 너무 쉬워서 깜짝 놀랬다.
총 걸린 시간 : 20분
난이도 : ★☆☆☆☆
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private static int n, answer = 0;
private static int[] T, P;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
n = Integer.parseInt(br.readLine());
T = new int[n];
P = new int[n];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
T[i] = Integer.parseInt(st.nextToken());
P[i] = Integer.parseInt(st.nextToken());
}
dfs(0, 0);
System.out.println(answer);
}
private static void dfs(int index, int value) {
if (index >= n) {
answer = Math.max(answer, value);
return;
}
// 해당 index를 포함
if (index + T[index] <= n) dfs(index + T[index], value + P[index]);
else dfs(index + T[index], value); // n을 넘어가면 value 합치지 않음
dfs(index + 1, value); // 해당 index 미포함
}
}
728x90
'Algorithm > Baekjoon Online Judge' 카테고리의 다른 글
[백준] 9935번 문자열 폭발 (Java) (0) | 2020.03.08 |
---|---|
[백준] 15684번 사다리 조작 (Java) (5) | 2020.02.27 |
[백준] 1022번 소용돌이 예쁘게 출력하기 (Java) (0) | 2020.02.21 |
[백준] 15685번 드래곤 커브 (Java) (0) | 2020.02.20 |
[백준] 6087번 레이저 통신 (Java) (0) | 2020.02.16 |