Koala - 16기/코딩테스트 기초 스터디
[백준/C++] 2839번: 설탕 배달
joo-nick
2024. 9. 29. 21:49
문제
https://www.acmicpc.net/problem/2839
Algorithm
1. 정수 N을 입력을 받아서 N킬로그램을 만들 수 있을 때와 없을 때로 구분한다.
2. 5킬로그램의 설탕 봉지를 가능한 많이 사용하는 것이 최소 개수가 될 수 있다.
3. N의 경우는 5킬로그램의 설탕 봉지만 쓰는 경우와 3킬로그램의 설탕 봉지만 쓰는 경우 2가지 다 쓰는 경우 불가능한 경우 총 4가지가 존재한다.
4. while문을 통해서 불가능한 경우와 나머지 3가지 경우를 분리하고, 5의 배수일 때를 확인하는 조건문을 통해서 최소 개수를 얻을 수 있다.
5. 5의 배수가 아니라면 3킬로그램의 설탕 봉지를 사용해서 3을 뺀후 다시 반복문을 통해서 최소 개수를 얻을 수 있다.
Code
#include<iostream>
using namespace std;
int main(){
int n;
cin >> n;
int a = 0;
while(n >= 0){
//N이 5의 배수인지 확인
if(n % 5 == 0){
a += (n/5);
cout << a << endl;
return 0;
}
//N이 5의 배수가 아니면 3을 빼서 다시 반복문 진행
n -= 3;
a++;
}
//N이 불가능한 값이면 반복문을 돌다 음수가 되기 때문에 -1 출력
cout << -1 << endl;
}