[BOJ/백준] 9657 돌 게임 3 (S3)

2024. 5. 22. 22:23· Algorithm PS/Baekjoon Online Judge
목차
  1. 문제
  2. 풀이
  3. Code

문제

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

풀이

돌이 N개가 있고 상근이가 먼저 게임을 시작하며 돌을 1개, 3개, 또는 4개를 가져갈 수 있을 때 마지막 돌을 가져가는 사람이 이기는 게임이다. 문제에 '완벽하게' 라는 조건이 붙었기 때문에 상근이가 이기는 쪽으로 게임을 해야 한다.

 

돌의 개수 별로 돌을 가져간 횟수?를 저장하는 배열 arr을 생성한다.

돌을 한 번에 4개를 가져갈 수 있기 때문에 N=1 ~ N=4까지는 고정 값을 넣어주었다.

  • N = 1 : 상근이가 돌 1개를 가져가면 게임이 끝난다. → 상근 Win : arr[1] = 1
  • N = 2 : 상근이가 돌 1개를 가져가고 창영이가 돌 1개를 가져가면 게임이 끝난다. → 창영 Win : arr[2]  = 2
  • N = 3 : 상근이가 돌 3개를 가져가면 게임이 끝난다. → 상근 Win : arr[3] = 1
  • N = 4 : 상근이가 돌 4개를 가져가면 게임이 끝난다. → 상근 Win : arr[4] =  1

N = 5 부터는 for 루프를 돌려 Bottom-up 형식으로 밑에서부터 배열을 채워 나간다. arr[n] = 1이면 상근이가 이기고, arr[n] = 2면 창영이가 이긴다.

Code

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;

        int n = Integer.parseInt(br.readLine());
        int arr[] = new int [1001];

        arr[1] = 1;  // sk
        arr[2] = 2;  // cy
        arr[3] = 1;  // sk
        arr[4] = 1;  // sk
        for (int i = 5; i <= n; i++) {
            if (arr[i-1] % 2 == 0 || arr[i-3] % 2 == 0 || arr[i-4] % 2 == 0) {
                arr[i] = 1;
            } else {
                arr[i] = 2;
            }
        }

        if (arr[n] % 2 == 0) {
            bw.write("CY");
        } else {
            bw.write("SK");
        }
        bw.flush();
        bw.close();
    }
}

 

728x90

'Algorithm PS > Baekjoon Online Judge' 카테고리의 다른 글

[BOJ/백준] 9251 LCS (G5)  (0) 2024.05.23
[BOJ/백준] 11053 가장 긴 증가하는 부분 수열 (S2)  (0) 2024.05.23
[BOJ/백준] 1931 회의실 배정 (S1)  (0) 2024.05.17
[BOJ/백준] 2170 선 긋기 (G5)  (0) 2024.05.17
[BOJ/백준] 11000 강의실 배정 (G5)  (1) 2024.05.16
  1. 문제
  2. 풀이
  3. Code
'Algorithm PS/Baekjoon Online Judge' 카테고리의 다른 글
  • [BOJ/백준] 9251 LCS (G5)
  • [BOJ/백준] 11053 가장 긴 증가하는 부분 수열 (S2)
  • [BOJ/백준] 1931 회의실 배정 (S1)
  • [BOJ/백준] 2170 선 긋기 (G5)
kyung.Kh
kyung.Kh
kyung.Kh
Dev..studynote
kyung.Kh
전체
오늘
어제
09-04 15:40
  • 분류 전체보기 (76)
    • Algorithm PS (32)
      • Baekjoon Online Judge (32)
      • Programmers (0)
    • Computer Science (8)
      • Databse (2)
      • Operating System (1)
      • Computer Network (0)
      • Computer Architecture (0)
      • Algorithm (4)
      • Java & Spring (1)
    • Spring (29)
      • Spring Boot (1)
      • 스프링 핵심 원리 - 기본편(인프런 김영한) (7)
      • Java (1)
      • 자바 ORM 표준 JPA 프로그래밍 (20)
    • Project (3)
      • 문제 & 해결 (2)
      • 개인 프로젝트 (1)
    • Book (3)
      • 객체지향의 사실과 오해 (3)
    • 우하한테크코스 (1)
      • precourse (1)

최근 글

인기 글

블로그 메뉴

    태그

    • BFS
    • 인프런
    • 재귀
    • 스프링 김영한
    • 구현
    • 그리디
    • springboot
    • Graph
    • dfs
    • 스프링 기본편
    • 스프링
    • Spring
    • JPA
    • 해시를 사용한 집합과 맵
    • DP
    • Union-Find
    • 스프링부트
    • 백준
    • 객체지향
    • 알고리즘
    hELLO · Designed By 정상우.v4.2.2
    kyung.Kh
    [BOJ/백준] 9657 돌 게임 3 (S3)
    상단으로

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.