[BOJ] 16887 루트 님 게임 - P1

TaeGN·2024년 9월 3일

BOJ Platinum Challenge

목록 보기
45/114

문제풀이

  1. x^(1/4)이나 x^(1/2)가 이전 그런디 값의 경계조건을 넘어가는 부분에 주의하며 그런디 값을 채워나간다.

주의사항


소요시간

1시간


package 백준.Platinum.P1.p16887_루트님게임

fun main() {
    fun Long.pow(n: Int): Long {
        var result = 1L
        for (i in 0 until n) {
            result *= this
        }
        return result
    }

    fun Int.pow(n: Int) = this.toLong().pow(n)

    val numArr = longArrayOf(4, 16, 82, 82.pow(2), 15.pow(4) + 1, (15.pow(4) + 1).pow(2), Long.MAX_VALUE)
    val G = intArrayOf(0, 1, 2, 0, 3, 1, 2)
    val N = readln().toInt()
    val aArr = readln().trim().split(" ").map(String::toLong)
    val result = aArr.fold(0) { acc, l -> acc xor G[numArr.binarySearch(l).let { if (it >= 0) it + 1 else -it - 1 }] }
    println(if (result != 0) "koosaga" else "cubelover")
}

https://github.com/TaeGN/Algorithm/blob/master/src/%EB%B0%B1%EC%A4%80/Platinum/P1/p16887_%EB%A3%A8%ED%8A%B8%EB%8B%98%EA%B2%8C%EC%9E%84/p16887_%EB%A3%A8%ED%8A%B8%EB%8B%98%EA%B2%8C%EC%9E%84.kt


문제링크

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


회고

규칙을 찾기 까다로운 문제였다.

0개의 댓글