[BOJ] 11694 님 게임 - P2

TaeGN·2024년 8월 17일

BOJ Platinum Challenge

목록 보기
19/114

문제풀이

  1. 각 돌 더미의 그런디 값을 xor한다.
  2. 돌 더미가 1인 것의 개수가 0이거나 홀수이면, 1번 값이 0이 아니면 선공 승, 0이면 후공 승이다.
  3. 돌 더미가 1인 것의 개수가 0이 아닌 짝수이면, 돌 더미 중에서 1이 아닌 것을 하나만 1로 바꾸고 계산한 값이 하나라도 0이 아니면 선공 승, 아니면 후공 승이다.

주의사항


소요시간

50분


package 백준.Platinum.P2.p11694_님게임

fun main() {
    val N = readln().toInt()
    val P = readln().split(" ").map(String::toInt)
    fun result(): Boolean {
        val oneCount = P.count { it == 1 }
        if (oneCount == N) return oneCount % 2 == 0
        val result = P.fold(0) { acc, i -> acc xor i }
        if (oneCount == 0 || oneCount % 2 == 1) return result != 0
        for (p in P) {
            if (p != 1 && ((result xor p) xor 1) != 0) return true
        }
        return false
    }
    println(if (result()) "koosaga" else "cubelover")
}

https://github.com/TaeGN/Algorithm/blob/master/src/%EB%B0%B1%EC%A4%80/Platinum/P2/p11694_%EB%8B%98%EA%B2%8C%EC%9E%84/p11694_%EB%8B%98%EA%B2%8C%EC%9E%84.kt


문제링크

https://www.acmicpc.net/problem/11694

0개의 댓글