https://www.acmicpc.net/problem/4796
문제
등산가 김강산은 가족들과 함께 캠핑을 떠났다. 하지만, 캠핑장에는 다음과 같은 경고문이 쓰여 있었다.
캠핑장은 연속하는 20일 중 10일동안만 사용할 수 있습니다.
강산이는 이제 막 28일 휴가를 시작했다. 이번 휴가 기간 동안 강산이는 캠핑장을 며칠동안 사용할 수 있을까?
강산이는 조금 더 일반화해서 문제를 풀려고 한다.
캠핑장을 연속하는 P일 중, L일동안만 사용할 수 있다. 강산이는 이제 막 V일짜리 휴가를 시작했다. 강산이가 캠핑장을 최대 며칠동안 사용할 수 있을까? (1 < L < P < V)
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다.
출력
각 테스트 케이스에 대해서, 강산이가 캠핑장을 최대 며칠동안 사용할 수 있는지 예제 출력처럼 출력한다.
백준 4796 캠핑 문제입니다.
연속하는 P일 중, L일동안만 사용할 수 있다는 조건이 있어서 처음에는 헷갈렸는데
P일에서 L일을 맨 앞에 높으면 됩니다.
예를 들어서 8일 중 5일만 사용할 수 있다면 5일 먼저 사용하고 3일을 쉬는 것입니다.
그렇게 접근한다면 결과값은 v//p * l +v%p가 됩니다.
근데 v%p가 l보다 클 경우에는 제한조건에 걸리므로 v//p * l + l로 하면 됩니다.
import sys
L, P, V = [], [], []
while True:
l, p, v = map(int, sys.stdin.readline().split())
if l == 0 and p == 0 and v == 0:
break
L.append(l)
P.append(p)
V.append(v)
for i, (l, p, v) in enumerate(zip(L, P, V)):
if v%p <= l:
result = (v//p) * l + v%p
else:
result = (v//p) * l + l
print("Case {}: {}".format(i+1,result))
'백준 알고리즘' 카테고리의 다른 글
파이썬) 백준 알고리즘 | 11508번 : 2+1 세일 (0) | 2022.01.28 |
---|---|
파이썬) 백준 알고리즘 | 1049번 : 기타줄 (0) | 2022.01.28 |
파이썬) 백준 알고리즘 | 1715번 : 카드 정렬하기 (0) | 2022.01.28 |
파이썬) 백준 알고리즘 | 1541번 : 잃어버린 괄호 (0) | 2022.01.27 |
파이썬) 백준 알고리즘 | 2847번 : 게임을 만든 동준이 (0) | 2022.01.27 |
댓글