[백준2839] 설탕배달
- 프로그래밍/알고리즘
- 2019. 3. 23.
[백준2839]설탕배달
안녕하세요.
오늘은 백준 설탕배달[2839번]을 풀어보려고 합니다.
문제를 해결한 코드는 해당 블로그에는 사진형식으로 올리려고 합니다.
(github에도 있습니다.)
백준 2839 문제
상근이가 설탕공장에서 일하는데 정확하게 n킬로그램을 배달해야 합니다.
설탕은 봉투에 있고 3킬로그램 봉지와 5킬로그램 봉지가 있습니다.
상근이는 귀찮아서 최대한 적은 봉지를 들고가려고 합니다.
조건
n킬로그램은 주어진다.(3<=n<=5000)
3kg봉지와 5kg봉지가 있다.
최대한 적은 봉지의 개수를 출력해야 한다.
3kg과 5kg으로 정확하게 n kg을 만들 수 없다면 -1을 출력해야 한다.
<예제> 입력과 출력
4 --> -1
6 --> 2
9 --> 3
11 --> 3
코드
코드는 아래와 같습니다.
해당 코드는 github에서 볼 수 있습니다.
문제 풀이
1. n kg을 입력받습니다.
2. for문을 실행합니다. (무한루프, 한번 돌때마다 a의 값이 올라감)
3. 전부 5kg의 봉지로 가져간다면 최소의 개수가 됩니다.
-그러니 일단 n을 5로 나누어서 나머지가 나오는지 확인합니다.
-나머지가 0이라면 최소의 개수임으로 if문을 실행하고 값을 a에 넣습니다.<아니라면 4번으로 갑니다.>
-for문을 탈출합니다.<출력을 위해 6번으로>
4. n을 3만큼 없애고 for문의 a++에 의해서 a의 값이 올라갑니다.
-설탕 3kg이므로 num-=3
-num의 값이 0보다 작아졌다면 for문을 탈출합니다.<출력을 위해 6번으로><아니라면 5번으로>
5. 다시 for문으로 돌아가서 3번부터 다시 시작합니다.
6. 탈출 조건을 만족해서 for문(무한루프)에서 탈출했다면 if문을 실행합니다.
-num<0이면 -1을 출력합니다. 아니라면 a에 저장한 값을 출력합니다.
후기
하... 몇번 틀렸습니다. ㅠㅠ 머리가 굳어서 힘드네요.
그래도 재미있었습니다. ㅎㅎ
https://www.acmicpc.net/problem/2839