1 분 소요

문제 링크

풀이 과정

이 문제는 입력받은 숫자 N킬로그램을 가장 적은 횟수로 배달하는지를 구하는 문제이다.

이 문제는 다음과 같이 접근하여 해결하였다.

  1. 15키로씩 생각하면 5키로 배달 3번으로 생각할 수 있다.
  2. 하지만 15키로 미만을 남은 경우에서는 5키로씩 배달이 3키로씩 배달을 대체할 수 없는 부분이 있다.
  3. 3, 6, 9, 12 등의 무게가 남은 경우 3키로씩 배달해야만 해결할 수 있다.
  4. 그러므로 남은 배달 할당량이 15키로 미만이 되기 전 까지는 전부 5키로 배달로 생각할 수 있다. (62키로는 5키로 배달 10번과 12키로)
  5. 15키로 미만에서 해결 3키로 배달과 5키로 배달로 해결할 수 없으면(1,2,4 키로) -1을 출력한다.

결과

namespace ConsoleApp4
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int N = int.Parse(Console.ReadLine()); // 입력받은 숫자

            int value = 0; // 배달 횟수

            // 5보다 일단 크다면 다음 조건문을 통해 계산함
            while(true)
            {
                if (N == 3)
                {
                    value += 1;
                    N -= 3;
                }
                else if (N == 6)
                {
                    value += 2;
                    N -= 6;
                }
                else if (N == 9)
                {
                    value += 3;
                    N -= 9;
                }
                else if (N == 12)
                {
                    value += 4;
                    N -= 12;
                }
                else // 3키로씩 배달로 해결되지 않는 경우 5키로 배달로 해결해봄
                {
                    if (N < 5)
                    {
                        break;
                    }

                    value += 1;
                    N -= 5;
                }


            }

            // 딱 떨어지지 않으면 -1 출력
            if (N != 0) value = -1;

            Console.WriteLine(value);

        }
    }
}

댓글남기기