문제링크 : www.acmicpc.net/problem/4796

 

4796번: 캠핑

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

www.acmicpc.net

그렇게 어려운 문제는 아니었다. 첫 날부터 캠핑장을 사용한다고 하면 최대 캠핑장 사용 일수를 구할 수 있다.

구체적으로는 V일 중 P일의 사이클이 V//P번 완전하게 반복하므로 L*(V//P)일동안 캠핑장을 사용하고, 마지막 부분은 V%P와 L중 작은 값 만큼 캠핑장을 사용한다. 따라서 캠핑장 최대 사용일은 L*(V//P) + min(V%P, L)이다. 

예제로 주어진 L=5, P=8, V=20일 경우를 살펴보면

V//P = 2이므로 P일의 사이클이 2번 반복되므로 16일까지 10번 캠핑장을 이용하고, V%P = 4, L=5이므로 마지막 4일동안 모두 캠핑장을 사용하므로 총 14일동안 캠핑장을 이용한다. 소스코드는 다음과 같다.

import sys

i = 0
while True:
    L, P, V = map(int, sys.stdin.readline().rstrip().split())

    if L == 0 and P == 0 and V == 0:
        break

    print('Case %d: %d' % (i+1, L*(V//P) + min(V%P, L)))

    i += 1

 

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 14891번 - 톱니바퀴  (0) 2021.01.03
[백준] 1449번 - 수리공 항승  (0) 2021.01.03
[백준] 2217번 - 로프  (0) 2021.01.03
[백준] 1932번 - 정수 삼각형  (0) 2021.01.02
[백준] 9461번 - 파도반 수열  (0) 2021.01.02

+ Recent posts