Input : L, P, V (연속하는 P일 중, L일 동안 사용 가능, V일 짜리 휴가) (1<L<P<V)
Output : ans = 캠핑장 사용 가능일수
Case i: ans.
풀이 :
연속하는 P일을 캠핑장 사용의 단위라 생각할 수 있다.
휴가일이 단위 P일보다 길 경우, P일동안 사용할 수 있는 L일을 모두 사용할 수 있다.
즉, 휴가일이 P일보다 길 경우, P일로 나눠떨어지는 횟수(q) 동안 매번 L일 캠핑장을 사용할 수 있따.
나머지일 중에 캠핑장을 사용할 수 있는 경우를 모두 사용한다 : min(L,V)
V<=P : ans = min(L,V)
V > P : q,r = (V,P)
ans = q*L + min(r,L)
단, 테스트 케이스 갯수가 주어지지 않으므로 while문을 이용해서 받고, cnt 변수를 통해 몇개의 case가 있는 지 기록한다.
def solve(t):
L,P,V = t
if V<=P: ans = min(L,V)
else:
q,r = divmod(V,P)
ans = q*L + min(r,L)
return ans
if __name__=='__main__':
T = []
while True:
case = list(map(int,input().split()))
if case==[0,0,0]: break
T.append(case)
for i in range(len(T)):
ans = solve(T[i])
print('Case {0}: {1}'.format(i+1,ans))
'공부하는 것들 > 알고리즘' 카테고리의 다른 글
백준 11256 : 사탕 (그리디) (0) | 2021.04.22 |
---|---|
백준 9440 : 숫자 더하기(그리디)*** (0) | 2021.03.12 |
백준 2891 : 카약과 강풍(그리디) (0) | 2021.03.07 |
백준 1783 : 병든 나이트(그리디) **** (0) | 2021.03.07 |
백준 1439 : 뒤집기(그리디) (0) | 2021.03.06 |