알고리즘/백준

[백준] 9655. 돌 게임 (자바 JAVA)

spacelife 2025. 1. 3. 00:01
728x90
반응형

문제

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

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

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

 

입력

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

출력

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

 

 

예제 입력 1

5

예제 출력 1

SK
 

접근 방법 🧐

간단한 게임 이론 문제이다.

 

상근이가 이기거나 창영이가 이기는 규칙을 찾는다.


N = 0일 때,
상근이가 돌을 못 가져가므로 상근이가 이기지 못한다.

N = 1일 때,

상근이가 돌을 1개 가져갈 수 있으므로 상근이가 이긴다.

N = 2일 때,

상근이가 돌을 1개 가져갈 수 있지만,

창영이가 다음 턴에서 남은 돌을 1개 가져가므로 상근이가 이기지 못한다.

N = 3일 때,

상근이가  돌을 3개 가져갈 수 있으므로 상근이가 이긴다.

N = 4 일 때,

상근이가 돌을 1개 또는 3개 가져가도 다음 턴에 창영이가 돌을 3개 또는 1개 가져가므로 상근이가 이기지 못한다.


위 과정을 반복해보면, N이 홀수일 때는 상근이가 이기고, N이 짝수일 때는 창영이가 이긴다는 것을 알 수 있다.

이러한 규칙성을 그대로 소스코드로 옮기면 된다.

 

 

내가 쓴 코드 ✍️

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        if (N % 2 == 1) {
            System.out.println("SK");
        } else {
            System.out.println("CY");
        }
    }
}

 

 

 

구독과 공감은 블로그 운영에 큰 힘이 됩니다!
긍정적인 댓글 남겨주시면 감사드리며,
보완해야 할 점이 있으면 댓글로 남겨주셔도 좋습니다!

728x90
반응형