백준 웹사이트 "2839번 - 설탕 배달" 문제풀이입니다.
언어는 C언어입니다. (제출 언어: C99)
문제
소스 코드
#include <stdio.h>
int main(void){
int N;
scanf("%d", &N);
int num = -1;
int max = N/5; // N보다 작은, 가장 큰 5의 배수
for(int i=max; i>=0; i--){
if((N-i*5)%3==0){
num = i + (N-i*5)/3;
break;
}
else{
if(i==0)
break;
else
continue;
}
}
printf("%d", num);
}
문제 풀이
문제의 조건대로 설탕 봉지의 개수가 최소가 되기 위해서는 5킬로그램 봉지의 개수가 최대가 되어야 합니다. 하지만 정확히 N 킬로그램을 배달해야한다는 것도 동시에 고려해야 합니다. 이를 위해 N보다 작은, 가장 큰 5의 배수를 구합니다 (Line 8의 'max'). 5킬로그램 봉지가 아무리 많아도 개수는 max를 넘지는 못하기 때문에, 최대인 max부터 개수를 하나씩 줄여가며 3킬로그램 봉지로 나머지 무게를 채울 수 있는지 확인합니다 (Line 10의 for문). N 킬로그램을 정확히 채우는 5킬로그램, 3킬로그램 봉지의 수가 구해지면 이를 출력하고, 구해지지 않는다면 '-1'이 출력되도록 합니다.
반응형
'코딩 > 백준 BOJ' 카테고리의 다른 글
[백준/C언어] 1011번 - Fly me to the Alpha Centauri (0) | 2022.01.21 |
---|---|
[백준/C언어] 10757번 - 큰 수 A+B (0) | 2022.01.20 |
[백준/C언어] 2775번 - 부녀회장이 될테야 (0) | 2022.01.19 |
[백준/C언어] 10250번 - ACM 호텔 (0) | 2022.01.18 |
[백준/C언어] 2869번 - 달팽이는 올라가고 싶다 (0) | 2022.01.17 |