본문 바로가기
백준알고리즘/그리디 알고리즘

(Python/🥉2)백준 알고리즘 22864번: 피로도

by windy7271 2023. 8. 24.
728x90
반응형

 

문제 바로가기 

그리디

 

문제:

하루에 한 시간 단위로 일을 하거나 일을 쉬어도 된다. 하루에 한 시간 일하면 피로도는 $A$만큼 쌓이고 일은 $B$만큼 처리할 수 있다. 만약에 한 시간을 쉰다면 피로도는 $C$만큼 줄어든다. 단, 피로도가 음수로 내려가면 $0$으로 바뀐다. 당연히 일을 하지 않고 쉬었기 때문에 처리한 일은 없다. 피로도를 최대한 $M$을 넘지 않게 일을 하려고 한다. $M$을 넘기면 일하는데 번아웃이 와서 이미 했던 일들도 다 던져버리고 일을 그만두게 된다. 번아웃이 되지 않도록 일을 할때 하루에 최대 얼마나 일을 할 수 있는지 구해보자. 하루는 24시간이다.

입력:

첫 번째 줄에 네 정수 A B C M이 공백으로 구분되어 주어진다. 맨 처음 피로도는 0이다.

출력:

하루에 번 아웃이 되지 않도록 일을 할 때 최대 얼마나 많은 일을 할 수 있는지 출력한다.

 

풀이:

 

import sys
sys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r')

A, B, C, M = map(int,sys.stdin.readline().split(" "))

count = 0
res = 0
tired =0
while count < 24:
    if tired + A <= M:
        res += B
        tired += A
    else:
        tired -= C
        if tired <= 0:
            tired = 0
    count += 1
print(res)


 

문제 그대로 코드로 옮겨주면 된다.

반응형

댓글