https://www.acmicpc.net/problem/1535
λ¬Έμ
μΈμ€μ΄λ μ±νμμ μ ν νμ λ³μμ λ무 μ€λ μ μν΄ μμλ€. μ΄μ μΈμ€μ΄κ° λ³μμ μ μν λμ μκΈ°λ₯Ό μκ°ν΄μ€ μ¬λλ€μκ² κ°μ¬νλ€κ³ λ§ν μ°¨λ‘μ΄λ€.
μΈμ€μ΄λ₯Ό μκ°ν΄μ€ μ¬λμ μ΄ Nλͺ μ΄ μλ€. μ¬λμ λ²νΈλ 1λ²λΆν° Nλ²κΉμ§ μλ€. μΈμ€μ΄κ° iλ² μ¬λμκ² μΈμ¬λ₯Ό νλ©΄ L[i]λ§νΌμ 체λ ₯μ μκ³ , J[i]λ§νΌμ κΈ°μ¨μ μ»λλ€. μΈμ€μ΄λ κ°κ°μ μ¬λμκ² μ΅λ 1λ²λ§ λ§ν μ μλ€.
μΈμ€μ΄μ λͺ©νλ μ£Όμ΄μ§ 체λ ₯λ΄μμ μ΅λνμ κΈ°μ¨μ λλΌλ κ²μ΄λ€. μΈμ€μ΄μ 체λ ₯μ 100μ΄κ³ , κΈ°μ¨μ 0μ΄λ€. λ§μ½ μΈμ€μ΄μ 체λ ₯μ΄ 0μ΄λ μμκ° λλ©΄, μ£½μ΄μ μλ¬΄λ° κΈ°μ¨μ λͺ» λλ κ²μ΄ λλ€. μΈμ€μ΄κ° μ»μ μ μλ μ΅λ κΈ°μ¨μ μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ μ¬λμ μ N(<=20)μ΄ λ€μ΄μ¨λ€. λμ§Έ μ€μλ κ°κ°μ μ¬λμκ² μΈμ¬λ₯Ό ν λ, μλ 체λ ₯μ΄ 1λ² μ¬λλΆν° μμλλ‘ λ€μ΄μ€κ³ , μ μ§Έ μ€μλ κ°κ°μ μ¬λμκ² μΈμ¬λ₯Ό ν λ, μ»λ κΈ°μ¨μ΄ 1λ² μ¬λλΆν° μμλλ‘ λ€μ΄μ¨λ€. 체λ ₯κ³Ό κΈ°μ¨μ 100λ³΄λ€ μκ±°λ κ°μ μμ°μ λλ 0μ΄λ€.
μΆλ ₯
첫째 μ€μ μΈμ€μ΄κ° μ»μ μ μλ μ΅λ κΈ°μ¨μ μΆλ ₯νλ€.
νμ΄
https://hyeyun.tistory.com/entry/λ°±μ€-BOJ-17208-μΉ΄μ°λ²κ±°-μλ°μ
μ μ μ¬ν λ¬Έμ βΌοΈ
Top-Down λ°©μμΌλ‘ ν΄κ²° π
N = 3
μλ 체λ ₯ = { 1, 21, 79 }
μ»λ κΈ°μ¨ = { 20, 30, 25 }
μ΄λΌλ©΄ π
μ΄λ° μμΌλ‘ idx λ²μ§Έ μ¬λμκ² 1οΈβ£ μΈμ¬νλ κ²½μ°, 2οΈβ£ μΈμ¬νμ§ μλ κ²½μ° λ‘ λλμ΄μ μ΅λκ°μ return λ°μλ° βΌοΈ
μ½λ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main_BOJ_1535_μλ
{
static int N;
static int[] energies;
static int[] joy;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer;
N = Integer.parseInt(br.readLine());
energies = new int[N+1];
joy = new int[N+1];
stringTokenizer = new StringTokenizer(br.readLine());
for(int i = 1 ; i < N+1 ; i++){
energies[i] = Integer.parseInt(stringTokenizer.nextToken());
}
stringTokenizer = new StringTokenizer(br.readLine());
for(int i = 1 ; i < N+1 ; i++){
joy[i] = Integer.parseInt(stringTokenizer.nextToken());
}
System.out.println(solve(0, 100));
}
private static int solve(int idx, int energy) {
if(idx == N)
return 0;
int hi = 0;
int noHi = 0;
if(energy - energies[idx+1] > 0){
// idx λ²μ§Έ μ¬λμκ² μΈμ¬
hi = solve(idx+1, energy-energies[idx+1]) + joy[idx+1];
}
// μΈμ¬μν¨
noHi = solve(idx+1, energy);
return Math.max(hi, noHi);
}
}
'μκ³ λ¦¬μ¦ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[ λ°±μ€ / BOJ 2758 ] λ‘λ ( JAVA / μλ° ) (0) | 2021.10.04 |
---|---|
[ λ°±μ€ / BOJ 2665 ] λ―Έλ‘ λ§λ€κΈ° ( JAVA / μλ° ) (0) | 2021.10.03 |
[ λ°±μ€ / BOJ 1302 ] λ² μ€νΈμ λ¬ ( JAVA / μλ° ) (0) | 2021.10.03 |
[ λ°±μ€ / BOJ 1541 ] μμ΄λ²λ¦° κ΄νΈ ( JAVA / μλ° ) (0) | 2021.10.02 |
[ λ°±μ€ / BOJ 1244 ] μ€μμΉ μΌκ³ λκΈ° ( JAVA / μλ° ) (0) | 2021.10.02 |