[BOJ/백준-Python]2839번 - 설탕 배달

2839번 - 설탕 배달

문제

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.

상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.

상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000)

출력

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

예제 입력 1

18

예제 출력 1

4

예제 입력 2

4

예제 출력 2

-1

예제 입력 3

6

예제 출력 3

2

예제 입력 4

9

예제 출력 4

3

예제 입력 5

11

예제 출력 5

3

해결할 방법을 생각해보자.💡

5와 3을 사용해 0을 만들어 주는 문제다. 0을 만들 수 없는 경우에는 -1을 출력해야한다.

배달해야하는 설탕 N 킬로그램을 받아주자.

N = int(input())

그리고 키로수를 구분하지 않고 설탕 봉지 수를 저장하기 위한 변수 count를 선언

count = 0

이번에는 while문을 사용해서 3씩 빼주는 방법을 활용할 것이다.

while True:

만약에 N을 5로 나눠서 나머지가 생기지 않는다면 그 몫만큼이 봉지의 개수가 될 것인데, 이전에 3kg 봉지를 뺀 적이 있다면 그만큼 더해서 출력해주면 된다. 3을 빼주기 전에 이 코드를 적어주는 이유는, 입력값이 25처럼 5로 바로 떨어지는 값들일 경우에는 5kg짜리만 사용할 수도 있기 때문이다.

if N % 5 == 0 :
    print(count + N//5)
    break

이제 3kg봉지를 사용한다 생각하고 입력값 N 에서 3을 빼주면서 봉지 수 count는 늘려주자.

	N -= 3
    count += 1

이렇게 계속 반복이 되다보면, 0이 되는 순간이 있을 것이다. 그 순간에는 그냥 count를 출력해주면 된다.

	if N == 0:
        print(count)
        break

그리고 만약에 0으로 딱 떨어지지 않고 음수로 떨어진다면, 정확하게 만들 수 있는 킬로그램이 아니므로 -1을 출력하게 만들어준다.

	if N < 0:
        print(-1)
        break

while문을 사용하면서 문제를 풀 때 핵심은 조건문을 거는 순서를 잘 구성해야한다. 만약 지금 적어왔던 순서가 아니라 다르게 if문을 사용했다면 아마 문제의 답으로는 틀렸다고 나올 것이고, 결과도 많이 달랐을 것이다.

코드💻

N = int(input())

count = 0
while True:
    if N % 5 == 0:
        print(count + N//5)
        break

    N -= 3
    count += 1

    if N == 0:
        print(count)
        break

    if N < 0:
        print(-1)
        break

해결 로그

문제 푼 날짜 체크
2022-06-06
   
   
   
   

2022

[web]jQuery 복습 3

1 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 2

13 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 1

14 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리4

5 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리3

10 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리2

7 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리1

8 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]CSS 기초 정리

11 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]HTML 기초 정리

8 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[Pandas]pandas 연습

3 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑

2021

[Python기초]module

1 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑