🐣 알고리즘 삐약/💻 백준 삐약

26 삐약 : 백준 1018[브루트 포스 | C++]

우주수첩 2022. 6. 30. 18:06
728x90

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

 

1018번: 체스판 다시 칠하기

첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.

www.acmicpc.net

 

#include <iostream>
#include <string>
#include <algorithm>
#include <utility>

using namespace std;

// 비교하고자 하는 문자열을 아예 저장을 한 후에 진행하였. 땨.

string WB[8] = {
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW"
};
string BW[8] = {
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB"
};

string input_arr[50];

int WB_check(int x, int y){
    int cnt = 0;
    for (int i = 0; i < 8; i++){
        for (int j = 0; j < 8; j++){
            if (input_arr[x + i][y + j] != WB[i][j])
                cnt++;
        }

    }
    return cnt;
}
int BW_check(int x, int y){
    int cnt = 0;
    for (int i = 0; i < 8; i++){
        for (int j = 0; j < 8; j++){
            if (input_arr[x + i][y + j] != BW[i][j])
                cnt++;
        }
    }
    return cnt;
}


int main() {
    int cnt=0;
    int redraw = 65;
    int n, m;

    cin >> n >> m;

    for (int i = 0; i < n; i++)
        cin >> input_arr[i];

    for (int i = 0; i + 8 <= n; i++){
        for (int j = 0; j + 8 <=m; j++){
            int tmp;
            tmp = min(WB_check(i, j), BW_check(i, j));
            if (tmp < redraw) {
                redraw = tmp;
            }
        }
    }
    cout << redraw;
    return 0;
}

 

  • 체스판이 놓여질 수 있는 경우는 단 두 경우이다. 
    • 1. Black으로 시작    2. White로 시작.
  • 처음에는 탐색을 시작하는 첫 위치의 문자열을 가지고 판단을 하려 했으나 너무 귀찮기도 하고 번거롭기도 하고~ 어짜피 두 경우만 존재하기 때문에 애초에 비교 문자열을 저장한 후 시작하였다.
  • 사용자로부터 입력받은 문자열에서 모든 경우의 8x8 사이즈 문자열 배열을 체스판을 만들 수 있는 두 가지 경우와 비교하며 redraw 수가 가장 작은 수를 저장, 출력한다.

 

문제를 읽고 알고리즘 설계 할 때 마다 느끼는 건데 

이해는 참~ 잘 한다

명확한 포인트를 잡아서 구체화 하는게 매번 부족한 걸 느끼지만

문제 풀면 나아지겠지 머 ㅇㅅㅇ

 

 

 

 

오늘도 쪼은 하루

오쫀하!!!! 

 

 

 

728x90