99클럽 코테 스터디 26일차 TIL + 게임이론

gahyunkim·2024년 11월 22일

항해99

목록 보기
26/34
post-thumbnail

백준 9655번 돌 게임

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초128 MB36402238682013066.607%

문제

돌 게임은 두 명이서 즐기는 재밌는 게임이다.

탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이기게 된다.

두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다.

[입력]

첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1000)

[출력]

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


문제 해석하기

  • 문제를 딱 보면, 상근이와 창영이가 총 N개의 돌을 가지고 게임을 할때 N이 홀수이면 상근이가 이기고 N이 짝수이면 창영이가 이기는 게임이라는 생각이 들었다.
  • 기본적으로 이 게임의 규칙을 찾아보면,
    • 돌이 1개: SK가 가져가서 승리.

    • 돌이 2개: CY가 가져갈 수밖에 없고, SK가 승리.

    • 돌이 3개: SK가 모두 가져가서 승리.

    • 돌이 4개: SK가 어떤 선택을 하든 CY가 이길 수 있음.

      ⇒ 이런 과정이 반복되는 것을 알 수 있었다.

n = int(input())

if n % 2 == 1:
    print("SK")
else:
    print("CY")

오늘의 회고

오늘 문제는 정말 너무 쉽게 풀려서 당황했다. 물론 문제 자체의 길이도 짧고 규칙도 단순해서 그런거겠지만, 오늘도 한문제를 잊지 않고 풀었다는 점에서 행복하다.

0개의 댓글