diff --git a/Algorithms/kotlin/Game_Theory-Introduction_to_Nim_Game.kt b/Algorithms/kotlin/Game_Theory-Introduction_to_Nim_Game.kt new file mode 100644 index 0000000..2c811b6 --- /dev/null +++ b/Algorithms/kotlin/Game_Theory-Introduction_to_Nim_Game.kt @@ -0,0 +1,31 @@ +import java.util.* +import kotlin.collections.* +import kotlin.io.* +import kotlin.text.* + +fun nimGame(pile: Array): String { + + // 1. Nim 게임의 공략법인 균형상태를 확인한다. + // 2. pile의 요소를 모두 xor하여 값이 0이 나오면 균형상태이므로, Second가 승리한다. + pile.reduce { acc, i -> acc xor i }.let { + return when(it) { + 0 -> "Second" + else -> "First" + } + } +} + +fun main(args: Array) { + val scan = Scanner(System.`in`) + + val g = scan.nextLine().trim().toInt() + + for (gItr in 1..g) { + val n = scan.nextLine().trim().toInt() + + val pile = scan.nextLine().split(" ").map{ it.trim().toInt() }.toTypedArray() + + val result = nimGame(pile) + println(result) + } +} \ No newline at end of file diff --git a/README.md b/README.md index c96db03..a57f9c7 100644 --- a/README.md +++ b/README.md @@ -85,4 +85,5 @@ All about hackerrank - Bit_Manipulation-Sum_vs_XOR.kt - Game_Theory-A_Chessboard_Game.kt - Game_Theory-Game_of_Stones.kt +- Game_Theory-Introduction_to_Nim_Game.kt - Game_Theory-Tower_Breakers.kt \ No newline at end of file