응애개발자
article thumbnail
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(); } }
profile

응애개발자

@Eungae-D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!