ps | |
---|---|
링크 | acmicpc.net/… |
출처 | BOJ |
문제 번호 | 13034 |
문제명 | 다각형 게임 |
레벨 | 플래티넘 3 |
분류 |
스프라그-그런디 |
시간복잡도 | O(n^2) |
인풋사이즈 | n<=1000 |
사용한 언어 | Python |
제출기록 | 30840KB / 112ms |
최고기록 | 60ms |
해결날짜 | 2022/05/31 |
"""Solution code for "BOJ 13034. 다각형 게임".
- Problem link: https://www.acmicpc.net/problem/13034
- Solution link: http://www.teferi.net/ps/problems/boj/13034
Tags: [Sprague-Grundy]
"""
def main():
N = int(input())
grundy = [0] * (N + 1)
for i in range(2, N + 1):
next_grundy_nums = {
grundy[j] ^ grundy[i - j - 2] for j in range(i // 2)
}
grundy[i] = next(x for x in range(N) if x not in next_grundy_nums)
print('1' if grundy[N] > 0 else '2')
if __name__ == '__main__':
main()