반응형
https://www.acmicpc.net/problem/4796
문제
캠핑장은 연속하는 20일 중 10일동안만 사용할 수 있다. 강산이는 이제 막 28일 휴가를 시작했다. 이번 휴가 기간동안 강산이는 캠핑장을 며칠동안 사용할 수 있을까?
-> 캠핑장은 연속하는 P일 중, L일동안만 사용할 수 있다. 강산이는 이제 막 V일짜리 휴가를 시작했다. 강산이가 캠핑장을 최대 며칠동안 사용할 수 있을까? (1 < L < P < V)
입력
여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다.
출력
각 테스트 케이스에 대해 강산이가 캠핑장을 최대 며칠동안 사용할 수 있는지 예제 출력처럼 출력한다.
예제 입력 1
5 8 20
5 8 17
0 0 0
예제 출력 1
Case 1: 14
Case 2: 11
풀이
처음에 문제가 잘 이해되지 않아서 예제 입력과 출력을 보며 이해했다. 예제 입력의 첫 번째 케이스를 보면 연속하는 8일중에 5일을 이용가능하고, 휴가기간은 총 20일이다.
저렇게 총 14일 이용가능하다. 따라서 이를 계산해주려면 V // P * L한 값을 구해준 후 (위의 예제에서는 20 // 8 * 5 = 10일이다.) 그 값에 V%P와 L 중에 최솟값을 더해주면 된다. (위의 예제에서 L은 5이고, V%P는 4이다.)
이 때 둘 중 최솟값을 구하는 이유는 V%P가 L보다 클 수도 있기 때문이다.
따라서 코드는 아래와 같이 작성해주면 된다.
cnt = 1
while True:
l, p, v = map(int, input().split(' '))
if l == 0:
break
res = v // p * l
res += min(v % p, l)
print('Case %d: %d' % (cnt, res))
cnt += 1
반응형
'Algorithm > Problem Solving' 카테고리의 다른 글
[Python] LeetCode - 841. Keys and Rooms (0) | 2021.12.08 |
---|---|
[Python] 백준/BOJ - 2839번: 설탕 배달 (0) | 2021.12.02 |
[Python] 백준/BOJ - 10610번: 30 (0) | 2021.12.01 |
[Python] 백준/BOJ - 15903번: 카드 합체 놀이 (0) | 2021.11.28 |
[Python] 백준/BOJ - 2847번: 게임을 만든 동준이 (0) | 2021.11.26 |