본문 바로가기

Algorithm/Baekjoon BOJ

[백준][파이썬] 4796번 : 캠핑(코드, 해설, 풀이)

반응형

https://www.acmicpc.net/problem/4796

 

4796번: 캠핑

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

www.acmicpc.net

 

 


- 문제

처음 입력 받은 5 8 20의 경우에는 강산이가 20일짜리 휴가를 낸 상황에서 캠핑을 20일을 하고 싶은데(이게 가능한가??) 캠핑장 특성상 8일 중 5일 밖에 캠핑을 할 수 없다는 것이다. 그러면 8일 + 8일하면 16일이 되고 4일이 남은 상황에서 8일중 5일만 캠핑 가능하니깐 5 + 5 + 4해서 14가 되는 것이다.


- 해설

  전체 휴가일수 // 연속하는 P일을 하면 나오는 숫자에 L일을 곱하면 나누었을 때 나머지를 제외한 일수 중에서 캠핑이 가능한 일수를 구할 수 있을 것이다. 이제 나머지 일수에 대해서는 2가지 경우를 생각할 수 있는데,

 

1. 나머지 일수가 L일보다 작을 경우

- 나머지 일수를 그대로 더하면 된다.

 

2. 나머지 일수가 L일보다 크거나 같을 경우

- 나머지 일수 대신에 L일을 더해주면 된다.

 

로 해결할 수 있을 것이다.

 


- 풀이

import sys
i = 1
while(1):
    A = list(map(int, sys.stdin.readline().split()))
    if A[0] == 0 and A[1] == 0 and A[2] == 0:
        break
    div = A[2]//A[1]
    rest = A[2] % A[1] if (A[2] % A[1]) < A[0] else A[0]
    answer = div*A[0] + rest
    print("Case {0}: {1}".format(i, answer))
    i += 1

 

반응형