#include <iostream>
using namespace std;
int main(void) {
int num;
cin >> num;
int ret = 0;
switch (num % 5) {
case 4:
if (num / 5 < 1) {ret = -1; break;}
else { ret = (num / 5) + 2; break; }
case 3:
ret = (num / 5) + 1; break;
case 2:
if (num / 5 < 2) { ret = -1; break; }
else { ret = num / 5 + 2; break; }
case 1:
if (num / 5 < 1) { ret = -1; break; }
else { ret = num / 5 + 1; break; }
case 0:
ret = num / 5; break;
}
cout << ret;
}
입력받은 num(kg)에 대하여 나머지를 기준으로 case를 나누었다.
1) 나머지가 4인 경우
몫이 1보다 작은 경우는 4kg이므로 5kg과 3kg으로 구성할 수 없으므로 -1을 출력한다.
그 외의 경우는 num/5의 몫에서 1을 빼고 나머지와 더해주면 9kg(5+4)이 남는다. 9/3=3이므로 3봉지가 추가된다.
따라서 봉지의 개수는 (num/5-1)+3=num/5+2가 된다.
2) 나머지가 3인 경우
봉지의 개수는 num/5+1이 된다.
3) 나머지가 2인 경우
몫이 1보다 작은 경우는 5kg 과 3kg으로 구성할 수 없으므로 -1을 출력한다.
그 외의 경우는 num/5의 몫에서 2를 빼고 나머지와 더해주면 12kg(10+2)이 남는다. 12/3=4이므로 4봉지가 추가된다.
따라서 봉지의 개수는 (num/5-2)+4=num/5+2가 된다.
4) 나머지가 1인 경우
몫이 1보다 작은 경우는 1kg이므로 5kg과 3kg으로 구성할 수 없으므로 -1을 출력한다.
그 외의 경우는 num/5의 몫에서 1을 빼고 나머지와 더해주면 6kg(5+1)이 남는다. 6/2=3이므로 3봉지가 추가된다.
따라서 봉지의 개수는 (num/5-1)+3=num/5+2가 된다.
반응형
'알고리즘 문제 > C++' 카테고리의 다른 글
[프로그래머스] Level1 : 크레인 인형뽑기 게임 - C++ (0) | 2020.06.30 |
---|---|
[백준] 2775번 : 부녀회장이 될테야 - C++ (0) | 2020.06.27 |
[백준] 1316번 : 그룹 단어 체커 - C++ (0) | 2020.06.26 |
[백준] 1157번 : 단어공부 - C++ (0) | 2020.06.26 |
[백준] 1065번 : 한수 - C++ (0) | 2020.06.22 |