Algorithm_study/Greedy

BAEKJOON #4796

oaho 2023. 4. 13. 02:09
반응형

 

문제 요약

캠핑장을 연속하는 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