https://www.acmicpc.net/problem/4796
풀이과정
위 문제의 경우 강산이의 L일 휴가 동안 몇일 캠핑장을 이용할 수 있는지 계산하는 문제이다.
해당 캠핑장의 경우 연속된 P일 중 L일을 사용할 수 있다고 한다.
1번 케이스를 예로 들면, 강산의 휴가 기간은 20일이며, 캠핑장의 경우 연속된 8일 동안 5일을 사용할 수 있다.
강산이의 휴가를 8로 나눠보면, 몫이 2이고, 나머지가 4이다.
즉, 강산이의 휴가를 8일씩 나눠보면 8일이 두 번 나머지는 4일이다.
때문에 5일을 두 번 꽉 채워 캠핑장을 사용할 수 있고, 추가로 4일 사용할 수 있다.
정답은 [몫 * L + 나머지] 즉, 14이다.
이번엔 L = 5 / P = 8 / V = 22라고 했을 때,
강산이의 22일 휴가를 8로 나눠보면, 몫이 2 나머지가 6이다.
그럼 이 경우 위 케이스와 같이 [2 * 5 + 6 = 16]이냐?
그렇지 않다. 왜냐 나머지 6이 5보다 크기 때문에 6일 중 5일만 사용할 수 있기 때문이다.
때문에 정답은 [2 * 5 + 5 = 15] 이다.
이를 코드로 작성해 보면,
var `case` = 0
while true {
let lpv = readLine()!.split(separator: " ").map { Int($0)! }
if lpv == [0, 0, 0] { break }
`case` += 1
let l = lpv[0]
let p = lpv[1]
let v = lpv[2]
let a = v / p * l
let b = v % p > l ? l : v % p
print("Case \(`case`): \(a + b)")
}
이다.
'코테' 카테고리의 다른 글
[다이나믹 프로그래밍] 백준 실버3 1463번: 1로 만들기(Swift) (0) | 2023.05.16 |
---|---|
[구현 + 재귀] 백준 실버5 17478번: 재귀함수가 뭔가요?(Swift) (0) | 2023.05.15 |
[이분 탐색] 백준 실버2 2805번: 나무 자르기(Swift) (0) | 2023.05.12 |
[완전 탐색] 백준 브론즈2 2231번: 분해합(Swift) (0) | 2023.05.12 |
[구현 + 시뮬레이션] 백준 2578번: 빙고 (0) | 2023.05.08 |