본문 바로가기
[ 다먹살 ]/- Coding

[백준] 2839 설탕 배달

by 엉망으로살기 2021. 9. 9.
반응형

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

 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net

 

수학 카테고리에 있었는데 dp가 바로 떠올라서 이 방법으로 해결했다. 반복문을 계속 돌려서 풀 수도 있을 것 같다.




 

문제 및 입출력




 

코드

import java.util.Scanner;

public class Main
{
     public static void main(String[] args)
     {
         Scanner sc = new Scanner(System.in);
         int sugar = sc.nextInt();

         // 5 이하일 때는 예외처리
         if(sugar<5)
         {
             if(sugar==3 || sugar==5)
             {
                 System.out.println(1);
                 return;
             }
             else
             {
                 System.out.println(-1);
                 return;
             }
         }

         // dp용 배열 초기설정
         int[] dp = new int[sugar+1];
         dp[3] = 1;
         dp[5] = 1;

         // dp실행
         for(int i=6; i<=sugar; 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-5], dp[i-3]) + 1;
                  }
              }
          }

         // dp실행 후 0이면 조건불만족이므로 0 출력, 0이 아니면 dp[sugar] 출력
         System.out.println(dp[sugar]==0?-1:dp[sugar]);
     }
}

 

반응형

'[ 다먹살 ] > - Coding' 카테고리의 다른 글

[백준] 2292 벌집  (0) 2021.09.10
[백준] 1193 분수찾기  (0) 2021.09.09
[백준] 2775 부녀회장이 될거야  (0) 2021.09.08
[백준] 1316 그룹 단어 체커  (0) 2021.09.08
[백준] 4673 셀프넘버  (0) 2021.09.07

댓글