[ python ] 백준 2839: 설탕 배달
✏️ PS/Boj

[ python ] 백준 2839: 설탕 배달

반응형

 

안녕하세요? 수구리입니다.

이번 포스팅은 파이썬으로 그리디 문제를 풀어보려고 합니다.

그리디 알고리즘은 매 순간마다 이름처럼 가장 탐욕스러운 선택을 하는 알고리즘입니다.

하지만 이 알고리즘은 최적의 해를 찾는다는 보장은 하지 못합니다.

설탕 배달 문제는 아래 링크에 있으니 확인해주세요.

 

 

[ 문제 ] 백준 2839: 설탕 배달

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

 

2839번: 설탕 배달

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

www.acmicpc.net

 

 

[ 나의 풀이 ]


# date : 2021.11.12
# problom : 2839
# title : 설탕 배달
# description : 최소한의 설탕 봉지로 N kg의 무게의 설탕을 배달하자

import sys
input = sys.stdin.readline

N = int(input())
cnt = 0 # 설탕 봉지 수
while N >= 0:
    if N % 5 == 0:
        cnt += (N // 5)
        print(cnt)
        break
    N -= 3
    cnt += 1
else:
    print(-1)

[ 설명 ]

1. 총 배달해야 하는 설탕의 무게 값을 변수 N에다가 저장해준다.

2. 배달해야 하는 설탕 봉지의 수 변수를 cnt라고 선언해주고 동시에 0으로 초기화한다.

3. 총 무게가 0 보다 크다면 즉, 배달해야 하는 설탕의 무게가 남아있지 않을 때까지 반복한다.

4. 만약, 배달해야하는 설탕의 무게가 있고, 그 무게 값이 5kg으로 나눠 떨어진다면 (N의 값이 5의 배수 라면)

5. 배달해야 하는 횟수는 5로 나눈 몫이 되어지고, 그때 cnt값을 출력하면 끝.

6. N의 값이 5의 배수가 아니라면, 3kg으로 빼주고 cnt값을 1 증가시켜준다.

7. 3번 ~ 6번의 과정을 반복, 문제에서 주어진 조건에서 만약 N의 값이 나눠 떨어지지 않는다면 -1을 출력한다.

 

 

반응형