[백준] 운동 (1173)(kotlin)

문제 설명

백준 1173번 문제 링크

입력 및 출력

» 입력

첫째 줄에 다섯 정수 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)
    }
}