Skip to content
kkw
조회 수 25 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

문제 : https://www.acmicpc.net/problem/2839

 

 

 

문제요약 :  

무작위로 주어진 Nkg의 설탕을 3kg을 담을 수 있는 봉지와 5kg을 담을 수 있는 봉지를 최소한으로 사용하여 설탕을 담으라!

 

 

출력 : 

봉지의 최소 개수를 출력한다. 만약, 정확하게 N킬로그램을 만들 수 없다면 -1을 출력한다.

 

 

알고리즘 :

 

우선 N킬로그램을 만들수 없는 경우부터 생각해야 한다! 이 경우를 알기 위해선 수학적 귀납법이 필요하다. 

우선 Nkg을 3g과 5g으로 만들수 있다고 가정하자 그렇다면 Nkg+3kg 또한 만들 수 있을것이다.

 

Nkg+1 만들 수 있다면 Nkg+4도 가능하다

Nkg+2 만들 수 있다면 Nkg+5도 가능하다

Nkg+3 만들 수 있다면 Nkg+6도 가능하다

 

이런 방식으로 n에서 부터 연속으로 3개 이상을 만들수 있다면 N값 이상 부터의 모든 수는 3과 5로 만들 수 있을 것이다.

n

n+3

가능여부

3

6

4

7

5

8

6

9

7

10

8

11

9

12

10

13

 

따라서 8이상의 모든 수는 3과 5의 조합으로 만들수 있다는것을 귀납적으로 증명하였다.

 

다음으로 탐욕(그라디)알고리즘을 통해서 사용하는 봉지의 수를 최소한으로 만들어야한다. 

 

가장 많은 양을 담을 수 있는 5kg 봉지를 최대한 사용한다. 5kg을 최대한 사용한후 나누어떨어지지 않는다면 나머지가 3에 나누어떨어질때까지 5kg봉지의 사용량을 -1씩 줄여간다.

KakaoTalk_20190731_213906626.jpg

 

 

 

<소스코드>

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
#include<iostream>
 
using namespace std;
 
int main()
{
    int a,j,k;
    int count = 0
    
    cin >> a;
    if (a == 4 ||a==7)
        cout << -1;
    else
    {
        j = a / 5;
        while (1)
        {
            if ((a - (5 * j)) % 3 == 0)
            {
                cout << j + ((a - (5 * j)) / 3);
                break;
            }
            j--;
        }
    }
 
}
 
 
cs
?

List of Articles
번호 제목 글쓴이 날짜 조회 수
8 백준 2775번 부녀회장이 될테야! file kkw 2019.08.12 21
7 백준 10250번 ACM 호텔 kkw 2019.08.10 25
6 백준 2869번 달팽이는 올라라고 싶다 kkw 2019.08.07 32
5 백준 1011번 Fly me to the Alpha Centauri file kkw 2019.08.04 33
4 백준 1193번 분수찾기 문제 file kkw 2019.08.03 30
3 백준2292번 벌집 문제 file kkw 2019.08.01 27
» 백준 2839번 설탕배달 문제 file kkw 2019.07.31 25
1 백준1712번 손익분기점 풀이과정 1 kkw 2019.07.29 27
Board Pagination Prev 1 Next
/ 1

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소