Minimax

문제 설명근우와 명우는 재미있는 카드 게임을 하고 있다. N개의 카드가 일렬로 놓여 있다. 각 카드에는 점수가 적혀있다. 근우부터 시작하여 번갈아가면서 턴이 진행되는데 한 턴에는 가장 왼쪽에 있는 카드나 가장 오른쪽에 있는 카드를 가져갈 수 있다. 카드가 더 이상 남아있지 않을 때까지 턴은 반복된다. 게임의 점수는 자신이 가져간 카드에 적힌 수의 합이다.근우와 명우는 서로 자신의 점수를 가장 높이기 위해 최선의 전략으로 게임에 임한다. 놓여있는 카드의 개수 N과 카드가 놓여있는 상태가 주어졌을 때 근우가 얻는 점수를 구하는 프로그램을 작성하시오.예를 들어 카드가 [4, 3, 1, 2]로 놓여있다고 하자. 근우는 처음에 4가 적힌 카드를 가져가고, 명우는 3이 적힌 카드를 가져간다. 그리고 근우는 2가 적..
MiniMaxMiniMax 알고리즘은 턴제로 진행되는 게임에서의 AI를 구현하는데 많이 사용되는 알고리즘이다.이를 적용하여 TicTacToe 게임의 AI를 구현해 보자.      시나리오AI를 실제로 구현하기 전에 시나리오를 통해 최적의 수를 구해보자.O가 플레이어 X가 AI라고 가정해 보자.O마크가 위와 같이 놓여있을 때, X를 두는 곳 중 가장 유리한 곳은 빨간색이 칠해진 곳일 것이다.O를 연속적이지 않게 만들면서 X를 연속된 세 개를 완성할 수 있는 위치이기 때문이다.하지만, 이러한 전략으로 수를 계속 놓게 된다면 완벽한 최적의 수를 구하지 못할 수도 있다. 그렇다면, 모든 비어있는 곳에 X를 두었다고 가정하고 게임을 진행했을 때 결과를 보고 X를 둘지 결정하는 것도 가능해 보인다.O와 X를 번갈아..