[백준] 운동 (1173)(kotlin)
문제 설명
입력 및 출력
» 입력
첫째 줄에 다섯 정수 N, m, M, T, R이 주어진다.
» 출력
첫째 줄에 운동을 N분하는데 필요한 시간의 최솟값을 출력한다.. 만약 운동을 N분 할 수 없다면 -1을 출력한다.
제한 사항
1 ≤ N, T, R ≤ 200 50 ≤ m ≤ M ≤ 200
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
5 70 120 25 15 | 10 |
문제 힌트
시간 행동 행동을 한 후의 맥박 1 운동 95 2 운동 120 3 휴식 105 4 휴식 90 5 운동 115 6 휴식 100 7 휴식 85 8 운동 110 9 휴식 95 10 운동 120
문제 풀이1
import java.io.BufferedReader
import java.io.InputStreamReader
fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))) {
//N: 운동 시간
//T: 운동할 경우 1분동안 맥박 증가량
//R: 1분동안 휴식할 경우 맥복 감소량
//m: 최소, 초기 맥박
//M: 최대 맥박
//output -> N분 운동하기 위해 필요한 시간의 최솟값
// n5 m70 M120 T25 R15
val (N, m, M, T, R) = readLine().split(" ").map { it.toInt() }
var totalMin = 0
var excercising = 0
var currentM = m
if (m + T > M) println(-1)
else {
while (true) {
if (excercising == N) break
totalMin++
if (currentM + T <= M) {
currentM += T
excercising++
} else {
if (currentM - R < m) {
currentM = m
} else {
currentM -= R
}
}
}
println(totalMin)
}
}