CodingTest/Java
BOJ_14501 : ν΄μ¬
Soom_1n
2022. 12. 17. 09:38
14501λ²: ν΄μ¬
첫째 μ€μ λ°±μ€μ΄κ° μ»μ μ μλ μ΅λ μ΄μ΅μ μΆλ ₯νλ€.
www.acmicpc.net
πΈ λ¬Έμ λΆμ πΈ
- NμΌλμ μ
무λ₯Ό μννλ€.
- Nκ°μ μ 무μ μ²λ¦¬μ νμν μκ° tμ λ°λ κΈμ‘ pκ° μλ€.
- μ²λ¦¬μ νμν μκ°μ΄ NμΌμ λμΌλ©΄ μ²λ¦¬ λΆκ°λ₯νλ€.
- λ°μ μ μλ κΈμ‘μ μ΅λκ°μ μΆλ ₯νλ€.
- μ¬κ· λ©μλλ‘ λΈλ£¨νΈ ν¬μ€ λ°©μμΌλ‘ νμ΄ν μ μλ€.
- λ€μ΄λλ―Ή νλ‘κ·Έλλ° λ°©μμΌλ‘ νμ΄ν μ μλ€.
πΈ μ½λ πΈ
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] t = new int[n];
int[] p = new int[n];
for (int i = 0; i < n; i++) {
t[i] = sc.nextInt();
p[i] = sc.nextInt();
}
int[] dp = new int[n + 1];
for (int i = 0; i < n; i++) {
if (i + t[i] <= n) {
dp[i + t[i]] = Math.max(dp[i + t[i]], dp[i] + p[i]);
}
dp[i + 1] = Math.max(dp[i + 1], dp[i]);
}
System.out.println(dp[n]);
}
}
πΈ μ½λ ν΄μ πΈ
- dpλ°©μμΌλ‘ νμ΄νλ€. intν λ°°μ΄ dpλ (μΈλ±μ€)μΌμ λ°μ μ μλ μ΅λ κΈμ‘μ μ μ₯νλ€.
- νμ¬ μΌ(i) + μ
무 μ²λ¦¬μ νμν κΈ°κ°( t[ i ] )μ΄ nμ΄νμ¬μΌ μ²λ¦¬ κ°λ₯ν μ
무μ΄λ€.
- κΈ°μ‘΄ κ° dp[ i + t[ i ] ]μ ν΄λΉ μ 무λ₯Ό μ²λ¦¬νμ λ μ»λ κΈμ‘ dp[ i ] + p[ i ] μ€ ν° κ°μ μ μ₯νλ€.
- νμ¬ μΌμ μ
무λ₯Ό μ²λ¦¬νμ§ μλ κ²½μ°λ μλ€.
- λ€μ μΌdp[ i + 1 ]μ νμ¬ μΌdp[ i ]μ λΉκ΅ν΄μ ν° κ°μ μ μ₯νλ€.
- νμ¬ μΌ(i) + μ
무 μ²λ¦¬μ νμν κΈ°κ°( t[ i ] )μ΄ nμ΄νμ¬μΌ μ²λ¦¬ κ°λ₯ν μ
무μ΄λ€.
πΈ end πΈ
- λ¨μ forλ¬ΈμΌλ‘ ꡬννμλ μμ 4λ²μ ν΅κ³Όνμ§ λͺ»νλ€.
- νμ¬ μΌμ μ 무λ₯Ό μ²λ¦¬νμ§ μλ κ²½μ°λ₯Ό λΉ λ¨λ ΈκΈ° λλ¬Έμ΄λ€.
- dpλ‘ κ΅¬ννλ μκ°λ³΄λ€ λ¬Έμ κ° κ°λ¨ν΄μ‘λ€.
- μμ 4λ²μ ν΅κ³Όνμ§ λͺ»νκ³ λ¬Έμ μ μκ³ λ¦¬μ¦ λΆλ₯λ₯Ό λ΄€μλ, dpμ Brute Forceκ° μκΈΈλ μ¬κ·μ dpλ°°μ΄μ΄λΌ μκ°νλλ° λ°°μ΄ κ·μΉμ΄ μ΄λ €μΈ κ²μ΄λΌ κ²λ¨Ήμλ κ² κ°λ€.
- μΌμ± SW μλ ν μ€νΈ κΈ°μΆ λ¬Έμ μ μ΅μ λμ΄λ λ¬Έμ μ΄λ€.
728x90