[Algorithm] 99클럽 코테 스터디 11일차 TIL | 백준_체스판 다시 칠하기(1018번)

2025. 2. 3. 16:31·Algorithm

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


문제가 이해 안 됐었는데 그냥 모든 경우의 수가 필요한 문제였다.ㅡㅡ

 

가로가 13, 세로가 10 이라고 가정하면

가로는 0~7, 1~8, 2~9, 3~10, 4~11, 5~12, 6~13

세로는 0~7, 1~8, 2~9, 3~10

만큼 이동하면서 계산해야한다.

for(int i = 0; i < N - 7; i++){
    for(int j = 0; j < M - 7; j++){
        minCount = Math.min(checkBoard(i,j), minCount);
    }
}

 

이후 checkBoard 메서드에서 색칠해야하는 개수를 세준다.

public static int checkBoard(int x, int y){
    String[] boardA = {"WBWBWBWB", "BWBWBWBW"};
    int countA = 0;
    int countB = 0;
    for(int i = x; i < x+8; i++){
        for(int j = y; j < y+8; j++){
            if(chess[i][j] != boardA[i%2].charAt(j-y)){
                countA++;
            }else{
                countB++;
            }
        }
    }

    return Math.min(countA, countB);
}

 

전체코드

import java.util.*;
import java.io.*;
class Main{
    static int minCount = Integer.MAX_VALUE;
    static char[][] chess;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        chess = new char[N][M];
        for(int i = 0; i < N; i++){
            chess[i] = br.readLine().toCharArray();
        }
        for(int i = 0; i < N - 7; i++){
            for(int j = 0; j < M - 7; j++){
                minCount = Math.min(checkBoard(i,j), minCount);
            }
        }
        System.out.println(minCount);
    }
    public static int checkBoard(int x, int y){
        String[] boardA = {"WBWBWBWB", "BWBWBWBW"};
        int countA = 0;
        int countB = 0;
        for(int i = x; i < x+8; i++){
            for(int j = y; j < y+8; j++){
                if(chess[i][j] != boardA[i%2].charAt(j-y)){
                    countA++;
                }else{
                    countB++;
                }
            }
        }

        return Math.min(countA, countB);
    }
}

 

 

'Algorithm' 카테고리의 다른 글

[Algorithm] 99클럽 코테 스터디 13일차 TIL | 백준_부등호(2529번)  (0) 2025.02.05
[Algorithm] 99클럽 코테 스터디 12일차 TIL | 백준_숫자 정사각형(1051번)  (4) 2025.02.04
[Algorithm] 99클럽 코테 스터디 10일차 TIL | 백준_빙산(2573번)  (4) 2025.01.24
[Algorithm] 99클럽 코테 스터디 9일차 TIL | 백준_이분 그래프(1707번)  (0) 2025.01.23
[Algorithm] 99클럽 코테 스터디 8일차 TIL | 백준_단지번호붙이기(2667번)  (1) 2025.01.22
'Algorithm' 카테고리의 다른 글
  • [Algorithm] 99클럽 코테 스터디 13일차 TIL | 백준_부등호(2529번)
  • [Algorithm] 99클럽 코테 스터디 12일차 TIL | 백준_숫자 정사각형(1051번)
  • [Algorithm] 99클럽 코테 스터디 10일차 TIL | 백준_빙산(2573번)
  • [Algorithm] 99클럽 코테 스터디 9일차 TIL | 백준_이분 그래프(1707번)
dev_ajrqkq
dev_ajrqkq
알고리즘 천재가 될 거야
  • dev_ajrqkq
    기록이 자산이다
    dev_ajrqkq
  • 전체
    오늘
    어제
    • 분류 전체보기 (155) N
      • Front-end (0)
      • Back-end (4)
        • Spring (1)
        • Java (8)
      • CS (9)
        • 데이터베이스 (5)
        • 네트워크 (4)
      • Algorithm (84) N
      • 이것저것 (0)
      • 버그잡기 (1)
      • TIL (37)
      • 후기 (3) N
      • 취준 (0)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      오공완
      패스트캠퍼스
      직장인자기계발
      개발자취업
      습관형성
      항해99
      TypeScript
      오블완
      티스토리챌린지
      코딩테스트준비
      Til
      패스트캠퍼스후기
      99클럽
      환급챌린지
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.2
    dev_ajrqkq
    [Algorithm] 99클럽 코테 스터디 11일차 TIL | 백준_체스판 다시 칠하기(1018번)
    상단으로

    티스토리툴바