[백준] 가위 바위 보? (4493)(kotlin)

문제 설명

백준 4493번 문제 링크

입력 및 출력

» 입력

첫째 줄에는 테스트 케이스의 개수 t(0 < t < 1000)가 주어진다. 각 테스트 케이스의 첫째 줄에는 가위 바위 보를 한 횟수 n(0 < n < 100)이 주어진다. 다음 n개의 줄에는 R, P, S가 공백으로 구분되어 주어진다. R, P, S는 순서대로 바위, 보, 가위이고 첫 번째 문자는 Player 1의 선택, 두 번째 문자는 Player 2의 선택이다.

» 출력

각 테스트 케이스에 대해서 승자를 출력한다. (Player 1 또는 Player 2) 만약, 비겼을 경우에는 TIE를 출력한다.

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

입력 출력
3
2
R P
S R
3
P P
R S
S R
1
P R
Player 2
TIE
Player 1

문제 풀이1

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

fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))) {
    repeat(readLine().toInt()) {
        var player1 = 0
        var player2 = 0

        repeat(readLine().toInt()) {
            when (rspIsPlayer1Win(readLine().split(" "))) {
                1 -> player1++
                2 -> player2++
                else -> {}
            }
        }

        println(whoIsWinner(player1, player2))
    }
}

fun rspIsPlayer1Win(game: List<String>): Int {
    return when {
        game[0] == "R" && game[1] == "S" -> 1
        game[0] == "S" && game[1] == "P" -> 1
        game[0] == "P" && game[1] == "R" -> 1
        game[0] == game[1] -> 0
        else -> 2
    }
}

fun whoIsWinner(player1: Int, player2: Int): String {
    return when {
        player1 > player2 -> "Player 1"
        player1 < player2 -> "Player 2"
        else -> "TIE"
    }
}