CodingTest/Baekjoon

[baekjoon] 백준 2839번(파이썬): 설탕 배달

JunJangE 2021. 5. 20. 17:21

문제

 

2839번: 설탕 배달

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

www.acmicpc.net

- 설탕은 3킬로그램 봉지와 5킬로그램 봉지가 있다.

- 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지의 최소 개수를 구하는 문제이다.

- 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 봉지 3개와 3킬로그램 봉지 1개를 배달해 총 4개를 가져갈 수 있다.

- N킬로그램일때 3 ≤ N ≤ 5000인 정수이다.

- 만약, 정확하게 N킬로그램을 만들 수 없다면 -1을 출력한다.

알고리즘

- 우선적으로 5킬로그램 봉지로 가져갈 수 있는지 확인하고 가능하다면 5킬로그램 봉지로 가져간다.

- 5킬로그램 봉지로 한 번에 가져갈 수 없다면 3킬로그램 1봉지를 가져간다.

- 위 과정을 반복문을 통해 실행한다.

- 5와 3으로 나누어 떨어지지않는다면 -1을 출력한다.

코드

n = int(input())
# 봉지 개수 초기값
result = 0

# 5킬로그램 봉지로 다 가져갈 수 있는지 우선적으로 확인한다.
# 그게 안된다면 3킬로그램 봉지를 하나씩 가져간다.
# 위 두 과정을 반복한다.
while True:
    # 5킬로그램 봉지로 다 가져갈 수 있으면 전체에서 5킬로그램을 나누어 결과값에 넣는다.
    if n % 5 == 0:
        # 결과값과 봉지 개수를 더해서 출력한다.
        result = n // 5 + result
        print(result)
        break
    # 3킬로그램 봉지를 하나 가져간다.
    # 봉지 개수 카운트
    n -= 3
    result += 1
    
    # 3과 5로 나누어떨어지지 않는다면 -1을 출력한다.
    if n < 0:
        print(-1)
        break

github

 

junjange/CodingTest

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com