문제링크 : https://www.acmicpc.net/problem/2839
문제풀이
경우의 수를 크게 아래와 같이 두 가지로 나눌 수 있다.
1. 5킬로그램 봉지로 다 채워지는 경우 (5로 나눈 나머지가 0인 경우)
2. 5킬로그램 봉지에 모두 담아지지 않는 경우 (5로 나눈 나머지가 0이 아닌 경우)
5로 나눠지는 15와 같은 경우는, 그 몫을 출력하면 된다.
하지만 2번의 경우 몇가지 예를 들면,
18킬로그램
① 5킬로그램 봉지 3개 --- 3킬로그램 남음
② 3킬로그램 봉지 1개
9킬로그램
방법1
① 5킬로그램 봉지 1개 --- 4킬로그램 남음
② 3킬로그램 봉지 1개 --- 1킬로그램 남음
방법2
① 3킬로그램 봉지 3개
위 작업 순서를 간단히 적어보면 아래와 같다.
① 5킬로그램 봉지에 넣어본 후, 남은 설탕들을 3킬로그램 봉지에 넣어본다.
② 3킬로그램 봉지에 모두 다 들어가지 않으면, 5킬로그램 봉지를 하나씩 풀어 다시 3킬로그램 봉지에 넣어본다.
이것을 식으로 적으면 아래의 소스코드와 같다.
소스코드
/* * 백준 2839번: 설탕 배달 */ #include <iostream> using namespace std; int main() { int N; cin >> N; if (N % 5 == 0) { cout << N / 5; } else { int num = N % 5; int bag3 = -1; int bag5 = 0; for (int i = N / 5; i >= 0; i--) { if (num % 3 == 0) { bag3 = num / 3; bag5 = i; break; } num += 5; } cout << bag3 + bag5; } return 0; }
'Algorithm > 문제풀이' 카테고리의 다른 글
[백준] 1193번: 분수찾기 (0) | 2019.03.22 |
---|---|
[백준] 2292번: 벌집 (0) | 2019.03.22 |
[백준] 2438번: 별 찍기 - 1 (0) | 2019.03.18 |
[백준] 1152번: 단어의 개수 (0) | 2019.03.18 |
[백준] 1000번: A+B (0) | 2019.03.13 |