Algorithm/백준
[DP][실버5] 9655번 돌게임 - 파이썬(python)
sdoaolo
2023. 2. 12. 17:33
728x90
문제
돌 게임은 두 명이서 즐기는 재밌는 게임이다.
탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이기게 된다.
두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다.
💻 사고과정
💻 내가 쓴 정답코드
import sys
input = sys.stdin.readline
n = int(input())
dp = [0] * (1001)
if n<=3:
result = 'SK' if n%2 == 1 else'CY'
print(result)
exit()
dp[1] = 1
dp[2] = 0
dp[3] = 1
for i in range(4, n+1):
dp[i] = not dp[i-1] or not dp[i-3]
if dp[n]:
print('SK')
else:
print('CY')
💻 근데 사실 이렇게 할 필요가 없다.
사고과정을 보다보면 -- 어차피 상근이가 게임을 시작하기 떄문에
n이 홀수이면 무조건 상근이가 이긴다는걸 파악할 수 있다. ㅋㅋㅋㅋㅋ
따라서 이런 코드도 정답이 될수있따.
n = int(input())
if n%2 == 0:
print('CY')
else:
print('SK')