반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴
조금씩 꾸준하게
[백준] 9657번 - 돌 게임 3 (Python) 본문
ProblemSolving/BOJ

[백준] 9657번 - 돌 게임 3 (Python)

적절 2023. 3. 15.
반응형

문제

https://www.acmicpc.net/problem/9657

 

9657번: 돌 게임 3

상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다.

www.acmicpc.net

 

접근 방법

기본적으로 N이 1, 3, 4면 선공이 이기고 2면 후공이 이긴다.

N이 5이상일 경우에는, 내가 선공을 했다고 했을 때

1) 1/3/4개를 가져가는 경우 중 하나라도 후공이 이기는 N값을 만들 수 있는 경우

→ 상대는 후공이 승리하는 N값인 상태에서 선공을 해야하므로 무조건 진다. 따라서 선공이 이긴다.

2) 1/3/4개 어느 경우를 가져가도 선공이 이기는 N값이 되는 경우

→ 상대는 선공이 승리하는 N값인 상태에서 선공을 하므로 무조건 이긴다. 따라서 후공이 이긴다.

 

코드

N = int(input())
maxN = 1000

isFirstWin = [False] * (maxN + 1) # isFirstWin[i]는 N=i일 때 선공이 이기는지 여부
isFirstWin[1] = True
isFirstWin[3] = True
isFirstWin[4] = True

for i in range(5, N + 1):
    # 몇 개를 가져가든 그 다음에 선공이 이기는 수를 넘겨줄 수 밖에 없다면 후공이 이기게 된다.
    if isFirstWin[i - 1] and isFirstWin[i - 3] and isFirstWin[i - 4]:
        isFirstWin[i] = False
    else:
        isFirstWin[i] = True
        
if isFirstWin[N]:
    print("SK")
else:
    print("CY")

 

풀이 정보

시도 횟수: 1회

총 문제 풀이에 걸린 시간: 15분 1초

 

반응형
Comments