์•Œ๊ณ ๋ฆฌ์ฆ˜๐Ÿˆ

๋ฌธ์ œํ’€์ด[dp] - ์„คํƒ• ๋ฐฐ๋‹ฌ, 1๋กœ ๋งŒ๋“ค๊ธฐ

Jeein0313 2023. 8. 3. 00:12

๋ฐฑ์ค€ 2839๋ฒˆ - ์„คํƒ• ๋ฐฐ๋‹ฌ 

 

package codingTestPractice.baekjoon;

import java.util.Scanner;

//์„คํƒ•๋ฐฐ๋‹ฌ dp
public class sol2839 {

    public int getMinBags(int sugar){
        int minBags=0; //์ตœ์†Œ ๋ด‰์ง€ ์ˆ˜
        int maxFiveKgBags = sugar/5; //5ํ‚ฌ๋กœ๊ทธ๋žจ ๋ด‰์ง€ ์ตœ๋Œ€ ๊ฐœ์ˆ˜
        boolean isPossible=false; //๋ฐฐ๋‹ฌ ๊ฐ€๋Šฅ ์—ฌ๋ถ€

        for(int i=maxFiveKgBags;i>=0;i--){
            if((sugar-i*5)%3==0){
                minBags=i+(sugar-i*5)/3;
                isPossible=true;
                break;
            }
        }

        return isPossible ? minBags : -1;
    }
    public static void main(String[] args) {
        sol2839 s = new sol2839();
        Scanner sc = new Scanner(System.in);

        int sugar = sc.nextInt();
        System.out.println(s.getMinBags(sugar));
    }
}

 

1๋กœ ๋งŒ๋“ค๊ธฐ

 

package codingTestPractice.baekjoon;

import java.util.Scanner;

public class sol1463 {

    static Integer[] dp;

    public int recur(int n){

        if(dp[n]==null){
            //6์œผ๋กœ ๋‚˜๋ˆ ์งˆ ๊ฒฝ์šฐ
            if(n%6==0){
                dp[n] = Math.min(recur(n - 1), Math.min(recur(n / 3), recur(n / 2))) + 1;
            }
            //3์œผ๋กœ๋งŒ ๋‚˜๋ˆ ์ง€๋Š” ๊ฒฝ์šฐ
            else if(n%3==0){
                dp[n] = Math.min(recur(n / 3), recur(n - 1)) + 1;
            }
            //2๋กœ๋งŒ ๋‚˜๋ˆ ์ง€๋Š” ๊ฒฝ์šฐ
            else if(n%2==0){
                dp[n] = Math.min(recur(n / 2), recur(n - 1)) + 1;
            }
            //2์™€ 3์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
            else{
                dp[n] = recur(n - 1) + 1;
            }
        }

        return dp[n];
    }

    public static void main(String[] args) {
        sol1463 s = new sol1463();
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        dp = new Integer[n+1];
        dp[0]=dp[1]=0;

        System.out.println(s.recur(n));

    }
}