반응형

문제 요약
캠핑장을 연속하는 P일 중, L일동안만 사용할 수 있다. 강산이는 이제 막 V일짜리 휴가를 시작했다. (L< P < V)
아이디어
휴가일수(V)에서 P/L만큼 조정해야한다.
ex) P=8, L=5, L=20
캠핑장을 연속하는 8일 중, 5일동안만 사용할 수 있다. 강산이는 이제 막 20일짜리 휴가를 시작했다.
이를 표로 시각화 해보면 더 이해하기 쉽다.
| 1일 | 2일 | 3일 | 4일 | 5일 | 1일 | 2일 | |||
| 3일 | 4일 | 1일 | 2일 | 3일 | 4일 | 5일 |
8일 중에 5일을 사용하고 난뒤, 3일 뒤에 사용할 수 있다.
8일씩 묶고 한 묶음 안에 5일씩 더해주고, 남은 5일은 3일 뒤니까 5일 더할 수 있다.
이를 식으로 표현해보자.
V//P*L + (V%8)
20//8*5 + (20%8)
그런데, 문제가 생긴다. 만약 나머지 > 캠핑 이용 가능 일수(L) 라면?
ex) 2 8 20
| 1 | 2 | 1 | 2 | ||||||
| 1 | 2 |
나머지가 5지만, 캠핑 이용 가능 일수가 2이기 때문에 5일은 사용하지 못한다.
즉, 이럴 땐 나머지(V%8)가 아닌, L을 더해준다.
최대한 이용가능한 일 수 : (V//P)*L + Min(V%P, L)
코드
import sys
n = 0
case = []
while True:
L, P, V= map(int, sys.stdin.readline().split())
case.append([L, P, V])
if L == 0 and P == 0 and V ==0 :
break
n+=1
for i in range(n):
usage_days = case[i][2] // case[i][1] * case[i][0] # 캠핑장을 최대한 이용한 일 수
remainder_days = min(case[i][2] % case[i][1], case[i][0]) # 남은 일 수
result = usage_days + remainder_days
print("Case {}: {}".format(i+1, result))반응형
'Algorithm_study > Greedy' 카테고리의 다른 글
| BAEKJOON #1931 (0) | 2023.04.13 |
|---|---|
| BAEKJOON #2864 (0) | 2023.04.13 |
| BAEKJOON #2720 (0) | 2023.04.13 |