ps:problems:boj:9655
돌 게임
ps | |
---|---|
링크 | acmicpc.net/… |
출처 | BOJ |
문제 번호 | 9655 |
문제명 | 돌 게임 |
레벨 | 실버 5 |
분류 |
게임 이론 |
시간복잡도 | O(1) |
사용한 언어 | Python |
제출기록 | 30864KB / 80ms |
최고기록 | 36ms |
해결날짜 | 2022/03/26 |
풀이
- N의 범위가 작으므로 DP를 통해서도 승리조건을 계산할수 있지만, 논리를 이용해서 규칙성을 파악하는 방식이 훨씬 간단하다
- 돌 게임 5은 똑같은 조건에서 DP를 통해 계산하는 것이 불가능하도록 N의 범위를 키운 버전이다
- 배스킨라빈스 게임과 비슷한 방식으로 분석한다. 내 차례에서 돌의 갯수를 x개로 만들 수 있다면, 상대가 다음에 어떻게 하든 나는 다음 내차례에서 돌의 갯수를 다시 x-4개로 만들수 있다.
- 돌의 갯수를 0개로 만들면 이기는 게임이므로, 내 차례가 왔을때 돌의 갯수가 1개 또는 3개라면 이길수 있다. 그리고 여기에 위의 논리를 추가하면, 내 차례가 왔을때 돌의 갯수가 4k+1 또는 4k+3개라면 이긴다. 바꿔 말하면, 내 차례가 왔을때 돌의 갯수가 홀수개라면 항상 이길수 있다.
코드
"""Solution code for "BOJ 9655. 돌 게임".
- Problem link: https://www.acmicpc.net/problem/9655
- Solution link: http://www.teferi.net/ps/problems/boj/9655
"""
def main():
N = int(input())
print('SK' if N % 2 else 'CY')
if __name__ == '__main__':
main()
ps/problems/boj/9655.txt · 마지막으로 수정됨: 2023/06/12 06:58 저자 teferi
토론