문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
P1과 P2로 불리는 두 명의 플레이어는 돌의 시작 숫자와 함께 게임을 하고 있다. 플레이어 1은 항상 첫 번째로 시작하고, 두 플레이어는 번갈아가면서 진행한다. 게임의 규칙은 아래와 같다.
돌의 시작 숫자가 주어질 때, 이긴 플레이어를 찾고, 출력해라. P1의 이름은 First이고 P2의 이름은 Second이다. 각 플레이어는 최적의 방식으로 플레이하며, 이길 수 있는 움직임이 존재할 경우 자신이 게임에서 지게 만드는 움직임을 하지 않는다.
예를 들어 n이 4일때 P1은 아래와 같은 움직임을 보여준다.
P1은 2번째 플레이를 하고 게임에서 승리한다.
gameOfStones 함수를 완성해라. 문자열 First 또는 Second를 반환해야한다.
gameOfStones 함수는 아래와 같은 매개변수를 가지고 있다.
점화식을 이용해서 문제를 해결했다. n을 7로 나눴을 때, 나머지가 0 또는 1이면 P2가 이기게 된다.
if문을 통해 n을 7로 나누고 나머지가 0 또는 1인지 확인한다. 그리고 조건을 만족한다면 Second를 반환한다.
if(n % 7 <= 1){ // 1보다 작거나 같으면 나머지가 0 또는 1이 된다
return "Second";
}
if문을 빠져나왔다면 P1이 이긴 경우라서 First를 반환한다.
return "First";
public static String gameOfStones(int n) {
if(n % 7 <= 1){
return "Second";
}
return "First";
}