2839번: 설탕배달 -> https://www.acmicpc.net/problem/2839
사칙연산 분류를 통해 들어가면 나누기/ 나머지를 사용하세요라는 힌트를 살짝얻을수 있습니다.
우선 한글로 설명하면
5kg으로 딱 나눠떨어지면 당연히 최소개수니 끝이겠죠?
딱 나눠떨어지지않는다면 5kg를 1개씩 줄이면서 남은 나머지가 3으로 나눠지는지 확인합니다
나눠떨어지는순간 반복문을 나와서 5kg와 3kg의 개수를 더해 출력하면됩니다.(총개수)
그렇게 마지막까지 안나눠떨어지면 -1을 출력.
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 39 | #include <iostream> using namespace std; main() { int n; int result; int c = 0; cin >> n; for (int i = n / 5; i >= 0; i--) { if (n%5 ==0) { result = n / 5; c = 1; break; } else { int k = n - (5 * i); for (int j = k / 3; j >= 0; j--) { if (k % 3 == 0) { result = i + k / 3; c = 1; break; } else result = -1; } } if (c == 1) break; } cout << result; } | cs |
n은 입력받은 총 설탕의 양, result는 출력할 값, c는 2중for문을 빠져나오기위해 대충 만들었습니다.
i는 5kg의 개수, j는 3kg의 개수. 로직은 위의 설명과 같습니다.
'프로그래밍 공부 > 백준' 카테고리의 다른 글
10989번 수 정렬하기3 / C++ → 카운팅 정렬(Counting Sort)로 풀기 (0) | 2018.03.21 |
---|---|
2448번 별찍기-11 / C++ (0) | 2018.03.10 |
4673번 셀프넘버 / C++ (0) | 2018.03.10 |