문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
Nim은 가장 유명한 2인용 알고리즘 게임이다. 이 게임의 기본적인 규칙은 아래와 같다.
예를 들면, n = 3인 돌 무더기가 있고, 각 돌 무더기는 pile = [3, 2, 4]를 가지고 있다. 게임은 다음과 같이 진행될 수 있다.
Player | Takes | Leaving |
---|---|---|
pile = [3, 2, 4] | ||
1 | 2 from pile[1] | pile = [3, 4] |
2 | 2 from pile[1] | pile = [3, 2] |
1 | 1 from pile[0] | pile = [2, 2] |
2 | 1 from pile[0] | pile = [1, 2] |
1 | 1 from pile[1] | pile = [1, 1] |
2 | 1 from pile[0] | pile = [0, 1] |
1 | 1 from pile[1] | WIN |
n과 각 돌 무더기의 개수가 주어질때, 두 플레이어가 최선으로 플레이 했을 경우 게임의 승자를 찾아라.
nimGame 함수를 완성해라. 문자열 First 또는 Second를 반환해야한다.
nimGame 함수는 아래와 같은 매개변수를 가지고 있다.
public static String nimGame(List<Integer> pile) {
int result = pile.stream().reduce(0, (pile1, pile2) -> pile1 ^ pile2);
if(result == 0){
return "Second";
}
return "First";
}