ps:problems:boj:11871
님 게임 홀짝
ps | |
---|---|
링크 | acmicpc.net/… |
출처 | BOJ |
문제 번호 | 11871 |
문제명 | 님 게임 홀짝 |
레벨 | 플래티넘 4 |
분류 |
스프라그-그런디 |
시간복잡도 | O(n) |
인풋사이즈 | n<=100 |
사용한 언어 | Python |
제출기록 | 30840KB / 72ms |
최고기록 | 56ms |
해결날짜 | 2022/05/27 |
풀이
- 님 게임을 살짝 변형한 문제. 여전히 스프라그-그런디 정리의 기본 유형이다.
- 한 무더기에서 돌의 갯수에 따른 그런디 수는 돌의 갯수가 홀수인지 짝수인지에 따라 달라진다. g(0)=0이고, x=2n+1 일때는 g(x)=n+1이 되고, x=2n일때는 g(x)=n-1 이 된다.
- 스프라그-그런디 정리대로 그런디수를 모든 무더기에 대해서 xor 해주면 끝. 시간복잡도는 O(n).
코드
"""Solution code for "BOJ 11871. 님 게임 홀짝".
- Problem link: https://www.acmicpc.net/problem/11871
- Solution link: http://www.teferi.net/ps/problems/boj/11871
Tags: [Sprague-Grundy]
"""
def main():
M = int(input()) # pylint: disable=unused-variable
P = [int(x) for x in input().split()]
grundy = 0
for p_i in P:
grundy_i = p_i // 2 + (1 if p_i % 2 else -1)
grundy ^= grundy_i
print('koosaga' if grundy else 'cubelover')
if __name__ == '__main__':
main()
ps/problems/boj/11871.txt · 마지막으로 수정됨: 2022/05/27 05:57 저자 teferi
토론