문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
두 플레이어는 타워 브레이커스 게임을 하고 있다. 항상 플레이어 1이 처음으로 플레이하고, 플레이어 둘 다 항상 최선의 플레이를 한다. 게임의 규칙은 아래와 같다.
n과 m의 값이 주어질때, 어떤 플레이어가 이길지 찾아라. 만약 첫번째 플레이어가 이길 경우, 1을 반환해라. 반대의 경우 2를 반환해라.
n = 2
m = 6
각 높이가 6인 2개의 타워가 있다. 플레이어 1은 두 가지의 선택지를 가지고 있다.
플레이어 1은 3개를 제거한다. 현재 두 타워는 3과 6의 높이를 가지고 있다.
플레이어 2는 타워의 높이를 같게 한다. 현재 두 타워는 같은 3의 높이를 가지고 있다.
현재 플레이어 1은 오직 하나의 플레이를 할 수 있다.
플레이어 1은 2개 조각을 제거하고 1을 남긴다. 타워는 1과 2의 높이이다.
플레이어 2는 다시 높이를 맞춘다. 타워 둘 다 1의 높이를 가진다.
플레이어 1은 더 이상 플레이할 수 없어고 지게 된다. 2를 반환해라.
towerBreakers 함수를 완성해라.
towerBreakers 함수는 아래와 같은 매개변수를 가지고 있다.
public static int towerBreakers(int n, int m) {
if (m == 1){
return 2;
}
return (2 - (n % 2));
}