Loading [MathJax]/jax/output/HTML-CSS/jax.js

문제

게임이론을 활용한 문제이다. 게임이론은 DP와 같이 묶이는 경우가 많은데, 이 문제는 수학적인 관찰을 활용해 풀 수 있다.

 

9661번: 돌 게임 7

첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1,000,000,000,000)

www.acmicpc.net

DP로 풀 경우

DP[0]=CY 이고, 나머지 N들을 채울 때 SK의 첫 선택에 따라 DP로 풀이가 가능하다.

N4x0 이고 DP[N4x]=CY 인 경우가
하나 이상 있다면 DP[N]=SK,
하나도 없다면 DP[N]=CY가 된다.

이 때 시간복잡도는 O(NlogN) 이다.
N의 최댓값이 1012 이므로 이렇게 풀어서는 시간 초과가 발생한다.

수학적 풀이

4x1,(mod,5) 또는 4x4,(mod,5) (x0)라는 사실을 통해 O(1)만에 풀이가 가능하다.
이로 도출할 수 있는 내용은, 중간 과정에서 누군가가 남은 돌이 5로 나누어 떨어지도록 돌을 가져가면 그 사람이 필승이다.

1) N0,(mod,5)일 경우
SK가 어떻게 돌을 가져가든 CY는 남은 돌의 개수를 5로 나누어 떨어지게 가져갈 수 있다.
-> CY 필승

2) N1,(mod,5) 또는 N4,(mod,5)일 경우
SK가 처음부터 남은 돌의 개수를 5로 나누어 떨어지게 가져갈 수 있다.
-> SK 필승

3) N2,(mod,5) 일 경우
3-1) SK가 남은 돌의 mod,5가 1이 되게 돌을 가져가면, CY가 남은 돌의 개수를 5로 떨어지게 가져갈 수 있다.
3-2) SK가 남은 돌의 mod,5가 3이 되게 돌을 가져가면 CY가 남은 돌의 mod,5가 2가 되게 가져갈 것이고, 이것이 반복되어 N=2 인 상태로 SK 순서가 될 것이다.
-> CY 필승

4) N3,(mod,5) 일 경우
4-1) SK가 남은 돌의 mod,5가 4가 되게 돌을 가져가면, CY가 남은 돌의 개수를 5로 떨어지게 가져갈 수 있다.
4-2) SK가 남은 돌의 mod,5가 2가 되게 돌을 가져가면 3)에 의해 SK가 승리한다.
-> SK 필승

정답

N을 5로 나눈 나머지가
0, 2이면 CY
1, 3, 5이면 SK를 출력한다.

'BOJ' 카테고리의 다른 글

[백준 1078] 뒤집음  (0) 2022.06.27
[백준 22021] 자동분무기  (0) 2022.06.26
[백준 1007] 벡터 매칭 - 백트래킹  (0) 2022.06.20
[백준 20149] 선분 교차 3  (0) 2022.06.18
[백준 12920] 평범한 배낭 2 쉬운 풀이  (1) 2022.06.18

+ Recent posts