[HackerRank] Introduction to Nim Game

아르당·2024년 6월 3일
0

HackerRank

목록 보기
102/109
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

Nim은 가장 유명한 2인용 알고리즘 게임이다. 이 게임의 기본적인 규칙은 아래와 같다.

  • 게임은 여러 개의 돌 무더기에서 시작된다. 각 무더기의 돌 개수는 같지 않을 수 있다.
  • 플레이어들은 번갈아가면서 한 무더기에서 1개 이상의 돌을 집어간다.
  • 마지막 돌을 제거하는 플레이어가 승리한다.

예를 들면, n = 3인 돌 무더기가 있고, 각 돌 무더기는 pile = [3, 2, 4]를 가지고 있다. 게임은 다음과 같이 진행될 수 있다.

PlayerTakesLeaving
pile = [3, 2, 4]
12 from pile[1]pile = [3, 4]
22 from pile[1]pile = [3, 2]
11 from pile[0]pile = [2, 2]
21 from pile[0]pile = [1, 2]
11 from pile[1]pile = [1, 1]
21 from pile[0]pile = [0, 1]
11 from pile[1]WIN

n과 각 돌 무더기의 개수가 주어질때, 두 플레이어가 최선으로 플레이 했을 경우 게임의 승자를 찾아라.

Function Description

nimGame 함수를 완성해라. 문자열 First 또는 Second를 반환해야한다.
nimGame 함수는 아래와 같은 매개변수를 가지고 있다.

  • pile: 각 무더기에 돌의 개수가 나타난 정수 배열

Constraints

  • 1 <= g <= 100
  • 1 <= n <= 100
  • 0 <= s[i] <= 100
  • 플레이어 1은 항상 먼저 진행한다.

All Code

public static String nimGame(List<Integer> pile) {

	int result = pile.stream().reduce(0, (pile1, pile2) -> pile1 ^ pile2);

	if(result == 0){
		return "Second";
	}

	return "First";
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글