코딩테스트

99클럽 코테 스터디 26일차 TIL : 백준 9655번, 게임이론

fecu 2024. 11. 22. 23:24
728x90

 

 

1. 오늘의 문제

 

오늘 문제는 별로 어렵지 않은 문제였다.

 

그런데...

 

문제에서 돌을 1개, 또는 3개를 가져갈 수 있다는 내용을 1~3개를 가져갈 수 있다는 것으로 착각했다.

 

나는 난독인건가...

 

그래서 한참을 헤메였다.

 

더보기

문제

 

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

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

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

 

입력

 

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

 

 

2. 원리

 

돌의 숫자를 1, 2, 3, 4...로 늘려나가면서 규칙을 찾아본다.

 

  • 돌이 1개일 때 : 상근1개 ->  상근이 승 / 'SK' 출력
  • 돌이 2개일 때 : 상근 1개, 창영 1개 -> 창영이 승 / 'CY' 출력
  • 돌이 3개일 때 : 상근 1개, 창영 1개, 상근 1개 -> 상근이 승 / 'SK'출력
  • 돌이 4개일 때 : (상근 3개, 창영 1개) or (상근 1개, 창영 3개) -> 창영이 승 / 'CY'출력
  • 돌이 5개일 때 : (상근 3개, 창영 1개, 상근 1개) or (상근1개, 창영 1개, 상근 3개) or (상근 1개, 창영 3개, 상근1개) -> 상근이 승 / 'CY' 출력
  • .......

 

이렇게 보면 단순하게 홀수일 때는 'SK'출력, 짝수일 때는 'CY'를 출력하면 된다.

 

3. 코드

 

from sys import stdin

put = stdin.readline
num = int(put())

if num % 2 == 0:
    print("CY")
else:
    print("SK")

 

4. 느낀점

 

때로는 코딩 실력보다 독해 실력이 더 중요하다는 것을 깨닫는 하루였다.

 

이놈의 덤벙거림은 언제까지 나를 따라다니려나 싶다.

728x90