๋ฐฑ์ค 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));
}
}