백준 2839번 C언어

Boomerang·2021년 8월 6일
0

알고리즘

목록 보기
2/10
post-thumbnail
  1. 문제를 처음 보고 최대한 적은 봉지로 제출해야하기때문에, 5키로 봉지를 최대한 많이 보내야 한다고 생각했다.
  2. 5키로 봉지 개수를 i, 3키로 봉지 개수를 j라고 했을때, 처음에 i개수를 최대한많이 주고 점차 줄여간다.
  3. 3키로 봉지 개수 j는, 전체 설탕량에서 5키로 봉지만큼 뺀것을 나누면 된다.
  4. break point는 i,j가 정확하게 남은 설탕량이랑 같을때 또는, i == 0인데 설탕이 3키로 봉지로 안나누어질때이다.
// sum == 5 * i + 3 * j == 봉지개수
#include <stdio.h>

int main(void){
    int n;
    int i,j;
    int sum;
    scanf("%d",&n);
    
    for(int k = 0; ; k++){
        
        i = n / 5 - k;
        j = (n - 5 * i) / 3;
        sum = i + j;
        
        if(i == 0){
            if(n % 3 != 0){
                printf("-1");
                break;
            }
        }
        if(n == (5 * i) + (3 * j)){
            printf("%d", sum);
            break;
        }   
    }
    return 0;
}
profile
Hello World

0개의 댓글