[백준] 22864 피로도

김영현·2025년 5월 2일
0

백준

목록 보기
37/40
post-thumbnail

🌭 문제 설명

  • 하루에 한 시간 단위로 일을 하거나 일을 쉬어도 된다. 하루에 한 시간 일하면 피로도는 AA만큼 쌓이고 일은 BB만큼 처리할 수 있다.

  • 만약에 한 시간을 쉰다면 피로도는 CC만큼 줄어든다. 단, 피로도가 음수로 내려가면 00으로 바뀐다. 당연히 일을 하지 않고 쉬었기 때문에 처리한 일은 없다.

  • 피로도를 최대한 MM을 넘지 않게 일을 하려고 한다. MM을 넘기면 일하는데 번아웃이 와서 이미 했던 일들도 다 던져버리고 일을 그만두게 된다.

  • 번아웃이 되지 않도록 일을 할때 하루에 최대 얼마나 일을 할 수 있는지 구해보자. 하루는 24시간이다.


🍗 제한 사항



🎁 입출력 예시

  • 첫 번째 줄에 네 정수 AA, BB, CC, MM이 공백으로 구분되어 주어진다.
  • 맨 처음 피로도는 0이다.

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

😎 나의 풀이

A,B,C,M = map(int,input().split())

tired = 0 # 피로도
work = 0 # 일한 시간

for _ in range(24): # 24번
  if tired + A <= M: # 피로도 + A가 M보다 작으면
    tired += A # 피로도에 A 추가
    work += B # B만큼 일한시간 추가
  else: # 보다 크면 휴식
    tired -= C # 피로도 C만큼 차감 (휴식했으니)
    if tired < 0: # 피로도가 음수가 되면
      tired = 0 # 피로도는 0으로 초기환
    
print(work)
  1. 피로도를 누적할 tired와 일한 시간을 카운트할 work 변수 초기화를 한다.
  2. 주석 내용의 로직대로 풀이하면 work를 출력할 수 있다.

  • 문제 내용대로 코드에 옮기면 됬던 문제였다.
profile
학생의 자세로 살아가는 개발자

0개의 댓글