DHistory
[Baekjoon] DP - 9658 돌 게임 4 (오답노트) 본문
문제
https://www.acmicpc.net/problem/9658
풀이
d[n]: 돌의 수가 n 개인 경우 우승자
상근이가 먼저 시작하기 때문에 "한 번"이라도 창영이가 마지막 돌을 가져가게 된다면 상근이의 승리
예시
d[1] = 1 (상근 마지막돌, 창영 승)
d[2] = 1 1 (창영 마지막돌, 상근 승)
d[3] = 1 1 1 (상근 마지막돌, 창영 승)
3 (상근 마지막돌, 창영 승)
d[4] = 1 3 (창영 마지막돌, 상근 승)
3 1 (창영 마지막돌, 상근 승)
4 (상근 마지막돌, 창영 승)
코드
import sys
n = int(sys.stdin.readline().rstrip())
d = [False] * (n + 5)
# False: 창영이 우승, True: 상근이 우승
d[1] = False
d[2] = True
d[3] = False
d[4] = True
for i in range(5, n + 1):
# 마지막 돌을 상근이만 가져갈 수 있으면
if d[i - 1] and d[i - 3] and d[i - 4]:
d[i] = False # 창영이 승
else:
d[i] = True
print("SK" if d[n] else "CY")
'Computer Science > Algorithm' 카테고리의 다른 글
[Baekjoon] 구현 - 12933 오리 (0) | 2024.09.05 |
---|---|
[Baekjoon] DP - 1793 타일링 (1) | 2024.09.02 |
[Baekjoon] BF - 1254 팰린드롬 만들기 (0) | 2024.08.29 |
[Baekjoon] BFS - 17086 아기상어 2 (오답노트) (0) | 2024.08.29 |
[Baekjoon] BF - 2304 창고 다각형 (1) | 2024.08.28 |