백준

[C언어] 백준 2839번: 설탕 배달

d0ng2 2024. 8. 23. 23:36
  • 문제

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


  • 코드
#include <stdio.h>
// 백준 2839번: 설탕 배달

int main(){

    int n; // 설탕 킬로그램
    scanf("%d", &n);

    int count = 0; // 설탕 봉지 수

    while(n != 0){
        if((n >= 5) && ((n - 5 >= 3) || (n - 5 == 0)) && (n - 5 != 4) && (n - 5 != 7)){
            n = n - 5;
            count++;
        }
        else if(n >= 3){
            n = n - 3;
            count++;
        }
        else{
            count = -1;
            break;
        }
    }

    printf("%d\n", count);

    return 0;
}

  • 문제풀이방법

n(설탕 킬로그램)에서 5 혹은 3을 하나씩 빼면서 답을 구해줄 것이다.

설탕에서 5 혹은 3을 빼면은 count(설탕 봉지 수)를 1씩 증가시키겠다.

 

  1. n이 5 이상이면서 n - 5는 4가 아니고(4 이면 다음 반복 때 3을 빼면 1 임) n - 5가 7 이 아니고(7 이면 다음 반복 때 5 또는 3을 빼면 2 또는 4 임) n - 5가 3보다 크거나(2 또는 1 이면 안됨) n 이 5 이면 n에서 5를 빼고 count를 1 증가시킨다.
  2. 위의 조건이 아니고 n이 3 이상이면 n에서 3을 빼고 countf를 1 증가시킨다.
  3. 1,2의 조건을 둘 다 만족하지 않은 경우의 설탕 마지막 무게는 1, 2 가 있을 것이다.

필자 또한 이 문제를 풀면서 고민을 좀 하였다.

고민하다가 '일단 코딩 해보자' 해서 예제 입출력을 하나씩 만족해 가며 코딩하여 문제를 해결할 수 있었다.

 

다들 화이팅합시다.