반응형
[BOJ][C++] 2839 설탕옮기기
문제
https://www.acmicpc.net/problem/2839
풀이
우선 설탕 전체를 5kg 봉지로 최대 몇 봉지를 넣는지 구했습니다.
5의 배수일 경우 이것이 최소값이므로 그대로 종료합니다.
그렇지 않을 경우, 5kg 봉지의 최댓값에서 for문으로 값을 내리면서 3의 배수(3kg 봉지에 담을 수 있는 최소값)를 찾을 때까지 반복합니다. 만약 값이 나오지 않을 경우 bool값을 두어 -1이 출력되도록 했습니다.
이 때, 5kg봉지가 최대인 값을 리턴해야하기 때문에 3의 배수가 나타나면 바로 for문을 중단합니다.
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include <iostream> using namespace std; int main() { //3키로 5키로 //18키로 = 3 * 6 ==> 6봉지 // = 5 * 3 + 3 * 1 ==> 4봉지 //최소 봉지? int n; // kg수 cin >> n; int five_num, three_num; five_num = n / 5; // 5kg의 최대 봉지수 int result_five, result_three; // 최종 봉지 수 int isOK = false; if (n % 5 != 0) { // 5의 배수가 아닐 경우 for (int i = five_num; i >= 0; i--) { int tmp = (n - (i * 5)); if (tmp%3==0) { // 3의 배수일 경우 for문 종료 three_num = tmp / 3; result_five = i; result_three = three_num; isOK = true; break; } } } else { // 5의 배수일 경우 result_five = n / 5; result_three = 0; isOK = true; } if (isOK) { // 봉지 수가 구해질 경우 cout << result_five + result_three; }else // 봉지 수가 cout << "-1"; } | cs |
반응형
'Language > C++' 카테고리의 다른 글
[BOJ][C++] 1436 영화감독 숌 (0) | 2018.12.17 |
---|---|
[C++][BOJ] 1018 체스판 다시 칠하기 (0) | 2018.12.14 |
[C++][오류] 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. (0) | 2018.12.11 |
[C++] BOJ 컴파일 에러 이유와 해결방법 (0) | 2018.12.11 |
[BOJ][11720] 숫자의 합 (0) | 2018.12.10 |
댓글