4796번: 캠핑
var caseNum = 0
while true {
caseNum += 1
let input = readLine()!.split(separator: " ").map { Int(String($0))! }
let L = input[0]
let P = input[1]
let V = input[2]
guard L + P + V != 0 else { break }
var days = (V / P) * L
let rem = V % P
if rem <= L {
days += rem
} else {
days += L
}
print("Case \(caseNum): \(days)")
}
- P기간 동안 최대 L만큼만 캠핑할 수 있으므로 일단 V에 들어갈 수 있는 P 길이의 기간을 구합니다.
- 거기에 L을 곱해 줍니다.
- ⭐️ 나머지를 처리하는 과정에 두 가지 분기가 있습니다
- 먼저 남은 날짜라 L보다 짧다면 = 남은 날은 전부 캠핑할 수 있습니다.
- 반면에 남은 날짜가 L보다 길다면 = 남은 날 중에 L만큼만 캠핑할 수 있습니다.
short coding
var cnt = 0
while true {
cnt += 1
let input = readLine()!.split(separator: " ").map { Int(String($0))! }
let (L, P, V) = (input[0], input[1], input[2])
if L == 0 && P == 0 && V == 0 { break }
let quotient = V / P
let remainder = V % P < L ? V % P : L
print("Case \(cnt): \(quotient * L + remainder)")
}