μ•Œκ³ λ¦¬μ¦˜/λ°±μ€€

[ λ°±μ€€ / BOJ 1535 ] μ•ˆλ…• ( JAVA / μžλ°” )

KIMHYEYUN 2021. 10. 3. 16:14
λ°˜μ‘ν˜•

https://www.acmicpc.net/problem/1535

 

1535번: μ•ˆλ…•

첫째 쀄에 μ‚¬λžŒμ˜ 수 N(<=20)이 λ“€μ–΄μ˜¨λ‹€. λ‘˜μ§Έ μ€„μ—λŠ” 각각의 μ‚¬λžŒμ—κ²Œ 인사λ₯Ό ν•  λ•Œ, μžƒλŠ” 체λ ₯이 1번 μ‚¬λžŒλΆ€ν„° μˆœμ„œλŒ€λ‘œ λ“€μ–΄μ˜€κ³ , μ…‹μ§Έ μ€„μ—λŠ” 각각의 μ‚¬λžŒμ—κ²Œ 인사λ₯Ό ν•  λ•Œ, μ–»λŠ” 기쁨이 1번

www.acmicpc.net

 

문제


μ„Έμ€€μ΄λŠ” μ„±ν˜•μˆ˜μˆ μ„ ν•œ 후에 병원에 λ„ˆλ¬΄ 였래 μž…μ›ν•΄ μžˆμ—ˆλ‹€. 이제 세쀀이가 병원에 μž…μ›ν•œ λ™μ•ˆ 자기λ₯Ό 생각해쀀 μ‚¬λžŒλ“€μ—κ²Œ κ°μ‚¬ν•˜λ‹€κ³  말할 차둀이닀.

세쀀이λ₯Ό 생각해쀀 μ‚¬λžŒμ€ 총 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-μΉ΄μš°λ²„κ±°-μ•Œλ°”μƒ

 

[ λ°±μ€€ / BOJ 17208 ] μΉ΄μš°λ²„κ±° μ•Œλ°”μƒ

https://www.acmicpc.net/problem/17208 17208번: μΉ΄μš°λ²„κ±° μ•Œλ°”μƒ 쀑간고사 μ’…λ£Œλ₯Ό 기념해 κ³„νš 없이 λˆμ„ μ“°λ˜ μ˜μ„μ΄λŠ” μ•ˆνƒ€κΉκ²Œλ„ 톡μž₯ μž”κ³ κ°€ 100원도 남지 μ•Šκ²Œ λ˜μ—ˆκ³ , κ²°κ΅­ μ˜μ„μ΄λŠ” μΉ΄μš°λ²„κ±° μ£Όλ°© 

hyeyun.tistory.com

와 μœ μ‚¬ν•œ 문제 ‼️

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);
        
    }
}

 

728x90
λ°˜μ‘ν˜•