설탕 배달 - 그리디 알고리즘

조해빈·2023년 3월 29일
0

백준

목록 보기
52/53

설탕 배달 - 2839번

문제

풀이

흑흑...
while로 접근할 생각을 못했던 것이 분하다...

봉지가 가장 적은 개수로 필요한 경우를 구하는 문제니 주어진 N을 5로 나누는 것이 주요 수행이 된다.

여기서 N이 5의 배수라면 그냥 5로 나눈 몫을 출력하고 아니라면 N이 5의 배수가 될 때까지 3을 차곡차곡 빼준다.

위를 반복해도 깔끔하게 떨어지지 않는 경우라면, 다시 말해 N==7인 경우와 같이 N이 3과 5의 더하기 연산만으로는 결코 만들 수 없는 숫자라면 -1을 출력한다.

다음의 코드는 정답이다.

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)
profile
UE5 공부하는 블로그로 거처를 옮겼습니다!

0개의 댓글