728x90
1. 문제
https://www.acmicpc.net/problem/2839
2. 접근 방법
1. 3키로와 5키로 봉지가 있을때 최대한 적은 봉지를 쓰는 문제입니다.
2. N이 주어졌을때 5키로 나누어지거나 , 3키로로 나누어지거나, dp[i-5] != 0, dp[i-3] != 0 이라면 3이나 5로 나누어지므로 dp를 만들어 풀어줬습니다.
3. 코드
<java />
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private static StringBuilder sb;
private static BufferedReader br;
private static StringTokenizer st;
private static int N;
private static int[]dp;
//입력
public static void input() throws Exception {
br = new BufferedReader(new InputStreamReader(System.in));
sb = new StringBuilder();
N = Integer.parseInt(br.readLine());
dp = new int[N+1];
}
//실행
public static void process() {
if(N >= 3) dp[3] = 1;
if(N >= 5) dp[5] = 1;
for(int i = 6 ; i <= N ; i++){
if(i % 5 == 0){
dp[i] = dp[i-5]+1;
}else if(i % 3 == 0){
dp[i] = dp[i-3]+1;
}else{
if(dp[i-3] != 0 && dp[i-5] != 0){
dp[i] = Math.min(dp[i-3],dp[i-5]) + 1;
}
}
}
System.out.println(dp[N] == 0 ? -1 : dp[N]);
}
public static void main(String[] args) throws Exception {
input();
process();
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[Java] 백준 4153번 : 직각삼각형 (0) | 2024.05.03 |
---|---|
[Java] 백준 2869번 : 달팽이는 올라가고 싶다 (0) | 2024.05.03 |
[Java] 백준 2798번 : 블랙잭 (1) | 2024.05.02 |
[Java] 백준 2775번 : 부녀회장이 될테야 (0) | 2024.05.02 |
[Java] 백준 2751번 : 수 정렬하기 2 (0) | 2024.05.02 |