프로그래밍/백준

[알고리즘] 백준 4796 파이썬 - 캠핑

매 석 2023. 1. 2. 12:42
반응형

 

 

4796번: 캠핑

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다.

www.acmicpc.net

문제

등산가 김강산은 가족들과 함께 캠핑을 떠났다. 하지만, 캠핑장에는 다음과 같은 경고문이 쓰여 있었다.

캠핑장은 연속하는 20일 중 10일동안만 사용할 수 있습니다.

강산이는 이제 막 28일 휴가를 시작했다. 이번 휴가 기간 동안 강산이는 캠핑장을 며칠동안 사용할 수 있을까?

강산이는 조금 더 일반화해서 문제를 풀려고 한다. 

캠핑장을 연속하는 P일 중, L일동안만 사용할 수 있다. 강산이는 이제 막 V일짜리 휴가를 시작했다. 강산이가 캠핑장을 최대 며칠동안 사용할 수 있을까? (1 < L < P < V)

 

문제풀이

cnt=1
while True:
    ans=0
    l,p,v = map(int,input().split())
    if l==p==v==0:
        break
    #01
    x=v//p
    ans+=l*x
    #02
    if v%p<=l:
        ans+=v%p
        print("Case "+str(cnt)+": "+str(ans))
    else:
        ans+=l
        print("Case "+str(cnt)+": "+str(ans))
    cnt+=1

- #01 : v를 p로 나눈 몫, 즉 p일 중에 l을 사용할 수 있기에 p일이 몇 세트 들어가는지 x에 저장한다.

           이후 ans에 l*x, 즉 p일 중 l일만 사용이 가능하므로 l일 곱하기 x를 한 것이다.

- #02 : 만약 v를 p로 나눈 나머지가, l보다 작거나 같으면 무조건 나머지 모두 캠핑장 이용이 가능하다.

           그렇기에 ans에 v%p 값을 더하고 출력한다.

           그렇지 않다면 남은 v%p일 중에 l일만 캠핑장을 추가로 이용이 가능하기에

           ans에 l을 더하고 출력한다.