SMALL

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

 

2839번: 설탕 배달

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

www.acmicpc.net


  • 문제


  • 문제풀이

첫번째 줄에서 N을 받아 N이 0이 되도록 5와 3으로 나누고 카운트를 추가해준다. 만일 0으로 나누어 떨어지지 않는다면  -1을 출력하도록 한다.

 

※수정 최근 브루트포스 알고리즘을 배운 후 이 문제에 적용할 수 있음을 알게 되었다.

 


  • 코드 1
namespace BaekJoon
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int N = int.Parse(Console.ReadLine());
            
            int a = 0;
            while (N > 0)
            {
                if (N % 5 == 0)
                {
                    N -= 5;
                    a++;
                }
                else if (N % 3 == 0)
                {
                    N -= 3;
                    a++;
                }
                else if (N > 5)
                {
                    N-=5;
                    a++;
                }
                else
                {
                    a = -1;
                    break;
                }
                
            }
            if (a != 0)
            {
                Console.Write(a);
            }
        }
    }
}
  • 코드 2(브루트 포스 알고리즘)
using System;

class Program
{
    static void Main(string[] args)
    {
        int n = int.Parse(Console.ReadLine()); // 입력값

        int minCount = int.MaxValue; // 최소한의 봉지 개수를 저장할 변수, 최대값으로 초기화

        for (int i = 0; i <= n / 3; i++) // 3kg 봉지의 개수
        {
            for (int j = 0; j <= n / 5; j++) // 5kg 봉지의 개수
            {
                int sum = 3 * i + 5 * j; // 사용한 봉지의 무게 합산

                if (sum == n) // 정확히 nkg의 설탕을 배달한 경우
                {
                    int count = i + j; // 봉지의 개수 계산

                    if (count < minCount) // 최소값 갱신
                    {
                        minCount = count;
                    }
                }
            }
        }

        if (minCount == int.MaxValue) // 봉지를 사용해도 정확히 nkg을 만들지 못한 경우
        {
            Console.WriteLine("-1");
        }
        else // 봉지를 사용하여 정확히 nkg을 만들었을 경우
        {
            Console.WriteLine(minCount);
        }
    }
}

  • 후기

조건문을 잘 활용해야 풀 수 있는 것 같다.

LIST

'백준 > C#' 카테고리의 다른 글

[C#]백준 10872: 팩토리얼  (0) 2023.03.15
[C#]백준 10870: 피보나치 수 5  (0) 2023.03.15
[C#]백준 2798번: 블랙잭  (0) 2023.03.13
[C#]백준 1436번: 영화감독 숌  (0) 2023.03.13
[C#]백준 2231번: 분해합  (0) 2023.03.13

+ Recent posts