문제 링크 : https://www.acmicpc.net/problem/2839
5KG, 3KG 봉지에 각각 입력 받은 NKG의 설탕을 담아 최대한 작은 숫자의 봉지를 가지고 배달을 하면 되는 문제입니다. 해답을 찾아내기까지의 과정은 아래와 같습니다.
- 5KG 봉지에 최대한 담아보고, 떨어진다면 출력하고 프로그램을 종료한다.
- 5KG 봉지에 정확하게 떨어지지 않는다면, 5KG 봉지를 하나씩 줄여가며, 3KG 봉지에 담아지는지를 계산한다. 3KG 봉지에 정확하게 떨어지는 순간이 있다면, 그 순간의 5KG 봉지의 수와 3KG 봉지의 수를 저장한 후, break;로 반복문을 나온다.
- 5KG 봉지의 수와 3KG 봉지의 수를 더한 값을 출력한다(처음에 -1과 0으로 초기화를 했기 때문에, 정확하게 떨어지지 않는 경우가 나오면 문제에서와 같이 -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 | #include <stdio.h> int main(int argc, const char * argv[]) { int N, num_5 = –1, num_3 = 0; int i; scanf(“%d”, &N); if(N % 5 == 0) { num_5 = N / 5; printf(“%d”,num_5); } else { for(i = N/5; i>=0; i––) { if( (N – 5 * i) % 3 == 0) { num_5 = i; num_3 =( N – 5 * i) / 3; break; } } printf(“%d”,num_5+num_3); } } | cs |