목차

다각형 게임

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()