티스토리 뷰

Algorithm

백준_퇴사_14501

Young_J 2020. 12. 20. 17:59

//알고리즘

1. dp(다이나믹 프로그래밍)

2. dp Table 생성 

3. 퇴사일을 기준으로 하루씩 줄여가면서 최대값을 갱신

4. 1일차까지의 최대값을 계산한 후 dp[1] 출력

더보기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class 퇴사_14501 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		int[] T = new int[N + 1];
		int[] P = new int[N + 1];

		int[] dp = new int[N + 2];

		for (int i = 1; i <= N; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine(), " ");
			T[i] = Integer.parseInt(st.nextToken());
			P[i] = Integer.parseInt(st.nextToken());
		}

		// 알고리즘
		for (int i = N; i >= 1; i--) {
			if (i + T[i] > N + 1) {
				dp[i] = dp[i + 1];
			} else {
				if (P[i] + dp[i + T[i]] > dp[i + 1])
					dp[i] = P[i] + dp[i + T[i]];
				else
					dp[i] = dp[i + 1];
			}
		}

		System.out.println(dp[1]);
	}

}

 

※ dp를 공부하기 전 여러번 시도해봤지만 못 풀었던 문제

dp 문제를 여러개 풀어보니까 이제 규칙이 보이기 시작해서 풀었다. 

dp가 코드는 짧아도 생각하는데 시간이 걸려 다른 탐색문제 보다 훨씬 오래 걸린다. 조금 더 공부를 해봐야 할거같다.

 

'Algorithm' 카테고리의 다른 글

백준_트리의 부모 찾기_11725  (0) 2020.12.24
백준_공유기 설치_2110  (0) 2020.12.22
백준_카드 정렬하기_1715  (0) 2020.12.20
백준_그룹 단어 체커_1316  (0) 2020.12.19
백준_나머지_3052  (0) 2020.12.17
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/02   »
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
글 보관함