Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

짱이 될거야

백준 22864: 피로도 Python 본문

알고리즘

백준 22864: 피로도 Python

jeong57 2022. 9. 13. 22:12

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

 

22864번: 피로도

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

www.acmicpc.net

 

# A: 피로도/시간, B: 일/시간, C: -피로도/시간, M: 최대 피로도
A, B, C, M = map(int, input().split())

piro = 0  # 피로도
work = 0  # 하루 최대 할 수 있는 일의 양
hr = 0  # 일한 시간

# 하루는 24시간
while hr < 24:
    # 다음 1시간 동안 일을 시킨다고 했을 때 피로도를 초과하는 경우
    if piro + A > M:
        # 이미 피로도가 초과한 상태이면 번아웃
        if piro > M:
            work = 0
            break
        # 아직까지 초과하지 않았지만 1시간 일 시키면 초과하는 경우
        # 일하지 않고 쉬기
        else:
            piro = piro - C
            # 피로도가 0보다 작으면 0으로 간주
            if piro < 0:
                piro = 0
    # 다음 1시간 동안 일을 시킨다고 했을 때 피로도를 초과하지 않는 경우
    else:
        # 일을 시키고 피로도 누적
        piro += A
        work += B
    # 일을 하던 쉬던 시간은 추가됨
    hr += 1

print(work)
Comments