백준/단계별

백준 2839 C#) 설탕 배달

alpacadabra 2022. 5. 6. 00:15

3과 5를 최소로 조합하여 숫자 n을 만드는 문제이다.

 

int n = int.Parse(Console.ReadLine());
int cnt = 0;

while (n % 5 != 0 && n > 0)
{
    n -= 3;
    cnt++;
}

Console.Write(n >= 0 ? cnt + n / 5 : -1);

 

그냥 n에서 3을 계속 빼주다가 5의 배수가 되는 시점에서 멈추면 된다.

 

혹시라도 n이 0보다 작아진다면 이는 3과 5로 조합할 수 없는 숫자라는 뜻인데,

그럴 경우는 n이 1, 2, 4, 7일 때만 가능하다. 이외에는 전부 조합이 가능하니 미리 예외 처리를 해도 좋다.

 

참고로 5의 나머지로 경우의 수를 나누는 풀이도 있다.

다만 반복문을 돌려도 금방 빠져나오기 때문에 속도에는 큰 차이가 없을 것이다.