From 0d13cbf9159339acc445945c9611cd14ea94ae20 Mon Sep 17 00:00:00 2001 From: nkey Date: Fri, 23 Jan 2026 17:40:42 +0900 Subject: [PATCH] =?UTF-8?q?9655-s5=20=EC=84=B1=EA=B3=B5=20+=20dp=20?= =?UTF-8?q?=EC=8B=9D=20=EC=B6=94=EB=A1=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- workbook_8708/9655-s5.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/workbook_8708/9655-s5.py b/workbook_8708/9655-s5.py index 873f042..8eadfbb 100644 --- a/workbook_8708/9655-s5.py +++ b/workbook_8708/9655-s5.py @@ -24,4 +24,15 @@ solution() k번째에 경기가 끝난다고 할 때, 상근이가 이기려면 k-1번째에 경기가 끝났을 때 1, 3개 중에 남아야 하고, 0, 2개가 남으면 창영이가 이긴다. 한 경기가 끝나면 2 or 4 or 6개의 돌이 없어지므로, 무조건 짝수개씩 사라지기 때문에 n이 짝수면 홀수개 즉, 1,3개가 절대 남을 수 없다. 반대도 마찬가지이므로 n이 짝수면 창영이의 승리, n이 홀수면 상근이의 승리이다. + +dp로 만들어보면 dp[i]는 i개의 돌이 있을 때 상근이의 승리 여부이다. (dp[i]=1 -> 상근이 승리) + +dp[i-1]에서 상근이가 이겼다면 1개 가져와서 이긴 경우, dp[i]는 1개가 남으므로 창영이 승리 +dp[i-1]에서 상근이가 이겼다면 3개 가져와서 이긴 경우, dp[i]는 4개가 남으므로 어떻게 해도 창영이 승리 +dp[i-1]에서 상근이가 진 상황도 위와 그대로 반대이다. 따라서 dp[i] = 1-dp[i-1] + +초기 dp는 0번째만 필요하므로 dp[0]=1 (돌이 1개이고, 상근이가 시작하니까) + +dp[i]의 적절한 상황을 구성하고, i상황이 되기 위해 연관되는 i 이전의 상황들을 상정하여 dp 식을 세우면 된다. +이번 상황은 i-1번째 상황만으로 i번째 상황이 결정된다. """ \ No newline at end of file