๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 14501_ํ‡ด์‚ฌ

๋ฟŒ์•ผ._. 2026. 1. 27. 10:55
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/14501)

< ํ‡ด์‚ฌ >

 

๋ฌธ์ œ ํ’€์ด 

 

dp๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ด์ต์„ ๊ตฌํ•œ๋‹ค. 

 

my solution (Java)

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

public class _14501_ { // ํ‡ด์‚ฌ
	static class Pair {
		int t, p;

		public Pair(int t, int p) {
			this.t = t;
			this.p = p;
		}
	}

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

		int n = Integer.parseInt(bf.readLine());

		Pair arr[] = new Pair[n + 1];
		int dp[] = new int[n + 2];

		for (int i = 1; i < n + 1; i++) {
			st = new StringTokenizer(bf.readLine());
			arr[i] = new Pair(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
		}

		/* ex1)
		for (int i = 1; i < n + 1; i++) {
			if (i + arr[i].t < n + 2) {
				dp[i] = arr[i].p;
			}
		}

		
		for (int i = 2; i < n + 1; i++) {
			for (int j = 1; j < i; j++) {
				if (j + arr[j].t <= i && i + arr[i].t < n + 2)
					dp[i] = Math.max(dp[i], dp[j] + arr[i].p);
			}
		}
		*/

		for (int i = 1; i < n + 1; i++) {
			dp[i] = Math.max(dp[i], dp[i - 1]);
			if (i + arr[i].t < n + 2) {
				dp[i + arr[i].t] = Math.max(dp[i + arr[i].t], dp[i] + arr[i].p);
			}
		}

		int result = 0;
		for (int i = 1; i < n + 2; i++) {
			result = Math.max(result, dp[i]);
		}
		System.out.println(result);
	}
๋ณ€์ˆ˜)
n : ์ผ
arr : ์ƒ๋‹ด ์ผ์ •ํ‘œ
dp : ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด์ต
result : ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ด์ต 

 

์ผ์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์ผ๋งŒํผ ์ƒ๋‹ด ์ผ์ •์„ ์ž…๋ ฅ๋ฐ›์•„ arr์— ์ €์žฅํ•œ๋‹ค. 

 

์ฒ˜์Œ์—๋Š” dp๋ฅผ ๊ฐ ์ƒ๋‹ด์ผ์— ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด์ต์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์ด์ค‘ ํƒ์ƒ‰์„ ํ†ตํ•ด ์ด์ „ ๋‚ ์งœ์—์„œ ํ˜„์žฌ ๋‚ ์งœ์— ์ƒ๋‹ดํ•  ์ˆ˜ ์žˆ๊ณ , ํ˜„์žฌ ๋‚ ์งœ์—์„œ ํ‡ด์‚ฌ์ผ๊นŒ์ง€ ์ƒ๋‹ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธ ํ›„ dp๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ ํƒํ–ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ ๋„ ์กฐ๊ธˆ ํ—ท๊ฐˆ๋ ค ๋‹ค๋ฅธ ํ’€์ด๋ฅผ ์ฐพ์•„๋ดค๋‹ค.

 

ํ•˜๋ฃจ์”ฉ ์‚ดํŽด๋ณด๋ฉฐ ๋จผ์ € ์–ด์ œ ๊ฐ’๊ณผ ๋น„๊ตํ•˜์—ฌ ์ตœ๋Œ“๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. ๊ทธ๋‹ค์Œ ์˜ค๋Š˜ ์ƒ๋‹ด์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์ƒ๋‹ด์ด ๋๋‚˜๋Š” ๋‚ ์˜ ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. ์ตœ์ข… dp๋ฅผ ์‚ดํŽด๋ณด๋ฉฐ ์ตœ๋Œ“๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.