본문 바로가기
코딩테스트 파이썬/수학

22864 피로도 파이썬

by 백엔드 개발자 2021. 9. 6.

문제

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

만약에 한 시간을 쉰다면 피로도는 C 만큼 줄어든다. 단, 피로도는 절대 0보다 작아질 수 없다. 당연히 일을 하지 않고 쉬었기 때문에 처리한 일은 없다.

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

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

입력

첫 번째 줄에 A, B, C, M이 공백으로 구분되어 주어진다. (하루는 24시간이다.)

맨 처음 피로도는 0이다.

출력

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

 

 

 

 

수학을 이용한 간단한 구현문제였다.

 

번아웃 조건인 M보다 크지 않도록 피로도를 생각해서 하루 일을 구하면 된다.

 

추가할 변수로

a,b,c,m

총 피로도 p

총 일 work를 사용했다.

 

 

 

1시간 단위이므로 24시간 for문으로 매 시간마다 일할 수 있는지 없는지 여부를 고려한다.

 

1.일할 수 있는 경우 

p+A<=M인 경우

2.쉬어야 하는 경우

p+A>M인 경우

2-1 p-C가 0미만인 경우

2-2 아닌경우

 

풀이

A,B,C,M=map(int,input().split())
p=
0
work=0
for _ in range(24):
   
if p+A<=M: #일할 수 있으면
       
p+=A
        work+=B
   
else:
       
if p-C<0:
            p=
0
       
else:
            p-=C
print(work)

 

'코딩테스트 파이썬 > 수학' 카테고리의 다른 글

2745 진법변환 파이썬  (0) 2021.09.06
5618 공약수  (0) 2021.09.03
소수 판별  (0) 2021.09.02