c# 백준 2839 설탕 배달
풀이 과정
이 문제는 입력받은 숫자 N킬로그램을 가장 적은 횟수로 배달
하는지를 구하는 문제이다.
이 문제는 다음과 같이 접근하여 해결하였다.
- 15키로씩 생각하면
5키로 배달 3번
으로 생각할 수 있다. - 하지만
15키로 미만을 남은 경우
에서는 5키로씩 배달이 3키로씩 배달을 대체할 수 없는 부분이 있다. 3, 6, 9, 12 등의 무게가 남은 경우
3키로씩 배달
해야만 해결할 수 있다.- 그러므로 남은 배달 할당량이 15키로 미만이 되기 전 까지는 전부 5키로 배달로 생각할 수 있다. (62키로는
5키로 배달 10
번과12키로
) - 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);
}
}
}
댓글남기기