๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/19622)
< ํ์์ค ๋ฐฐ์ 3 >
๋ฌธ์ ํ์ด
์์์ ํ์ k๋ k-1๊ณผ k+1 ํ์์ ์๊ฐ์ด ๊ฒน์น๊ณ ๋ค๋ฅธ ํ์๋ค์ ๊ฒน์น์ง ์์ผ๋ฏ๋ก(k-2 ํ์ + k ํ์, k-1 ํ์) ์ค์ ์ต๋๊ฐ์ ์ ํํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _19622_ { // ํ์์ค ๋ฐฐ์ 3
static class Info {
int start;
int end;
int num;
public Info(int start, int end, int num) {
this.start = start;
this.end = end;
this.num = num;
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(bf.readLine());
Info arr[] = new Info[n];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(bf.readLine());
arr[i] = new Info(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()),
Integer.parseInt(st.nextToken()));
}
int dp[] = new int[n];
dp[0] = arr[0].num;
if (n > 1) {
dp[1] = Math.max(dp[0], arr[1].num);
}
for (int i = 2; i < n; i++) {
dp[i] = Math.max(dp[i - 2] + arr[i].num, dp[i - 1]);
}
int result = 0;
for (int i = 0; i < n; i++) {
result = Math.max(result, dp[i]);
}
System.out.println(result);
}
}
๋ณ์)
n : ํ์์ ์
arr : ํ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๋ฐฐ์ด
dp : ํ์๋ฅผ ์งํํ ์ ์๋ ์ต๋ ์ธ์์ ๊ตฌํ๋ ๋ฐฐ์ด
result : ํ์๋ฅผ ์งํํ ์ ์๋ ์ต๋ ์ธ์
ํ์์ ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ํ์์ ์๋งํผ ํ์ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ ๋ฐฐ์ด์ ์ ์ฅํ๋ค. dp์ 0๋ฒ์งธ๋ฅผ 0๋ฒ์งธ ํ์์ ์ฐธ์ํ๋ ์ธ์์ผ๋ก, 1๋ฒ์งธ๋ฅผ 0๋ฒ์งธ์ 1๋ฒ์งธ ํ์์ ์ฐธ์ํ๋ ์ธ์ ์ค ์ต๋๊ฐ์ผ๋ก ์ด๊ธฐํํ๋ค. ๋๋จธ์ง๋ฅผ ํ์ํ๋ฉฐ ํ์ฌ ํ์๋ฅผ ์ ํํ๋ค๋ฉด dp[i-2]+ํ์ฌ ํ์ ์ฐธ์ ์ธ์, ํ์ฌ ํ์๋ฅผ ์ ํํ์ง ์๋๋ค๋ฉด dp[i-1] ์ด๋ฏ๋ก ๋ ์ค์ ์ต๋๊ฐ์ผ๋ก ์ ์ฅํ๋ค.
์ต์ข dp๋ฅผ ํ์ํ๋ฉฐ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Baekjoon] 19621_ํ์์ค ๋ฐฐ์ 2 (0) | 2026.02.11 |
|---|---|
| [Baekjoon] 5953_Profits (0) | 2026.02.10 |
| [Baekjoon] 1699_์ ๊ณฑ์์ ํฉ (0) | 2026.02.09 |
| [Baekjoon] 4097_์์ต (0) | 2026.01.30 |
| [Baekjoon] 18353_๋ณ์ฌ ๋ฐฐ์นํ๊ธฐ (0) | 2026.01.29 |