[백준] 펫 (1362)(kotlin)

문제 설명

백준 1362번 문제 링크

입력 및 출력

» 입력

  • 입력은 번호를 가진 시나리오들로 구성됩니다. 시나리오는 1번부터 시작되며 1씩 증가합니다. 적정 체중(o)와 실제 체중(w)가 한 줄에 입력됨으로써 시나리오가 시작됩니다(10 ≤ o, w ≤ 1000). 그 다음 줄부터 펫에 가할 작용이 한 줄에 하나씩 주어지며, “# 0”을 마지막 줄로 하여 시나리오가 종료됩니다. “# 0”은 처리하지 않습니다. 펫에게 가할 각 작용은 ‘E’ 또는 ‘F’로 시작하며, 공백을 두고 숫자 n (1 ≤ n ≤ 999)이 주어집니다. 모든 시나리오가 끝나면 “0 0”이 입력되며, “0 0”은 처리하지 않습니다.

» 출력

각 시나리오에 대하여, 시나리오 번호와 모든 작용이 완료된 후 펫의 상태를 공백으로 구분하여 한 줄씩 출력합니다.

예제 입출력(테스트케이스)

입력 출력
100 100
F 10
F 10
E 20
# 0
50 30
F 5
E 20
# 0
0 0
1 :-)
2 :-(

문제 풀이1

import java.io.BufferedReader
import java.io.InputStreamReader

fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))){
    var count = 1
    while (true) {
        val (o, w) = readLine().split(" ").map { it.toInt() }
        if (o < 10 || w < 10) break

        var isDead = false
        var weight = w

        while (true) {
            val (operation, n) = readLine()!!.split(" ")
            when (operation) {
                "F" -> weight += n.toInt()
                "E" -> weight -= n.toInt()
                else -> break
            }

            if (weight <= 0) {
                isDead = true
            }
        }

        println("${count++} " +
                if (isDead) "RIP"
                else {
                    if (weight in (o / 2 + 1) until o * 2) ":-)"
                    else ":-("
                }
        )

    }
}