๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœจ Algorithm

[๋ฐฑ์ค€/C++] 1018๋ฒˆ : ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ

by nitronium102 2021. 8. 29.

๋ฌธ์ œ

์ง€๋ฏผ์ด๋Š” ์ž์‹ ์˜ ์ €ํƒ์—์„œ MN๊ฐœ์˜ ๋‹จ์œ„ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋Š” M*N ํฌ๊ธฐ์˜ ๋ณด๋“œ๋ฅผ ์ฐพ์•˜๋‹ค. ์–ด๋–ค ์ •์‚ฌ๊ฐํ˜•์€ ๊ฒ€์€์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๊ณ , ๋‚˜๋จธ์ง€๋Š” ํฐ์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๋‹ค. ์ง€๋ฏผ์ด๋Š” ์ด ๋ณด๋“œ๋ฅผ ์ž˜๋ผ์„œ 8*8 ํฌ๊ธฐ์˜ ์ฒด์ŠคํŒ์œผ๋กœ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค.

์ฒด์ŠคํŒ์€ ๊ฒ€์€์ƒ‰๊ณผ ํฐ์ƒ‰์ด ๋ฒˆ๊ฐˆ์•„์„œ ์น ํ•ด์ ธ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ, ๊ฐ ์นธ์ด ๊ฒ€์€์ƒ‰๊ณผ ํฐ์ƒ‰ ์ค‘ ํ•˜๋‚˜๋กœ ์ƒ‰์น ๋˜์–ด ์žˆ๊ณ , ๋ณ€์„ ๊ณต์œ ํ•˜๋Š” ๋‘ ๊ฐœ์˜ ์‚ฌ๊ฐํ˜•์€ ๋‹ค๋ฅธ ์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ์ •์˜๋ฅผ ๋”ฐ๋ฅด๋ฉด ์ฒด์ŠคํŒ์„ ์ƒ‰์น ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‘ ๊ฐ€์ง€๋ฟ์ด๋‹ค. ํ•˜๋‚˜๋Š” ๋งจ ์™ผ์ชฝ ์œ„ ์นธ์ด ํฐ์ƒ‰์ธ ๊ฒฝ์šฐ, ํ•˜๋‚˜๋Š” ๊ฒ€์€์ƒ‰์ธ ๊ฒฝ์šฐ์ด๋‹ค.

๋ณด๋“œ๊ฐ€ ์ฒด์ŠคํŒ์ฒ˜๋Ÿผ ์น ํ•ด์ ธ ์žˆ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†์–ด์„œ, ์ง€๋ฏผ์ด๋Š” 8*8 ํฌ๊ธฐ์˜ ์ฒด์ŠคํŒ์œผ๋กœ ์ž˜๋ผ๋‚ธ ํ›„์— ๋ช‡ ๊ฐœ์˜ ์ •์‚ฌ๊ฐํ˜•์„ ๋‹ค์‹œ ์น ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๋‹น์—ฐํžˆ 8*8 ํฌ๊ธฐ๋Š” ์•„๋ฌด๋ฐ์„œ๋‚˜ ๊ณจ๋ผ๋„ ๋œ๋‹ค. ์ง€๋ฏผ์ด๊ฐ€ ๋‹ค์‹œ ์น ํ•ด์•ผ ํ•˜๋Š” ์ •์‚ฌ๊ฐํ˜•์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N๊ณผ M์ด ์ฃผ์–ด์ง„๋‹ค. N๊ณผ M์€ 8๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋ณด๋“œ์˜ ๊ฐ ํ–‰์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. B๋Š” ๊ฒ€์€์ƒ‰์ด๋ฉฐ, W๋Š” ํฐ์ƒ‰์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ง€๋ฏผ์ด๊ฐ€ ๋‹ค์‹œ ์น ํ•ด์•ผ ํ•˜๋Š” ์ •์‚ฌ๊ฐํ˜• ๊ฐœ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

ํ’€์ด

00. ๋จผ์ € ๋งจ ์œ„์ชฝ ์นธ์ด ํฐ์ƒ‰์ธ ๊ฒฝ์šฐ์™€ ๊ฒ€์€์ƒ‰์ธ ๊ฒฝ์šฐ ๋ณด๋“œํŒ์„ ๋งŒ๋“ ๋‹ค(๊ธฐ์ค€)

01. ๋ณด๋“œ์˜ ์‹œ์ž‘์ ์„ ์•Œ์•„๋‚ธ๋‹ค.

02. ํ•ด๋‹น ์‹œ์ž‘์ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋ฅธ ๋ณด๋“œํŒ๊ณผ ๊ธฐ์ค€ ๋ณด๋“œํŒ์„ ๋น„๊ตํ•˜๋ฉฐ ๋‹ค๋ฅผ ๋•Œ๋งˆ๋‹ค cnt๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. 

(์œ„์ชฝ ์นธ์ด ํฐ์ƒ‰์ธ ๊ฒฝ์šฐ์™€ ๊ฒ€์€์ƒ‰์ธ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋น„๊ตํ•˜์—ฌ ๊ทธ ์ค‘ ๋” ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ cnt๋กœ ํ•œ๋‹ค) <- ์‚ฝ์งˆ ์กฐ์‹ฌใ…Ž

03. ์ตœ์†Œ ๊ฐœ์ˆ˜์™€ cnt๋ฅผ ๋น„๊ตํ•œ๋‹ค. 

 

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
string board[50];

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

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

int WB_cnt(int x, int y){
  int wb_cnt = 0;
  for (int i=0; i<8; i++){
    for (int j=0; j<8; j++){
      if (board[x+i][y+j] != WB[i][j])
        wb_cnt++;
    }
  }
  return wb_cnt;
}

int BW_cnt(int x, int y){
  int bw_cnt = 0;
  for (int i=0; i<8; i++){
    for (int j=0; j<8; j++){
      if (board[x+i][y+j] != BW[i][j])
        bw_cnt++;
    }
  }
  return bw_cnt;
}

int main(){
  int n, m, min_cnt=64;
  cin >> n >> m;
  for (int i=0; i<n; i++){
    cin >> board[i];
  }

  for (int i=0; i+8<=n; i++){
    for (int j=0; j+8<=m; j++){
      int cnt = min(WB_cnt(i, j), BW_cnt(i, j));
      if (min_cnt > cnt)
        min_cnt = cnt;
    }
  }

  cout << min_cnt;
}

 

์‚ฝ์งˆ

01. ์œ„์ชฝ ์นธ์ด ํฐ์ƒ‰์ด๋ฉด ํฐ์ƒ‰์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์นธ๋งŒ ๋น„๊ตํ•˜๊ณ , ๊ฒ€์€์ƒ‰์ด๋ฉด ๊ฒ€์€์ƒ‰์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์นธ๋งŒ ๋น„๊ตํ–ˆ๋‹ค. ์œ„์ชฝ ์นธ์ด ํฐ์ƒ‰์ด์–ด๋„ ๊ฒ€์€์ƒ‰์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์นธ์„ ์น ํ•˜๋Š” ๊ฒŒ ๋” ๋‚˜์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑธ ์ƒ๊ฐ ๋ชปํ–ˆ๋‹ค.

02. ๋ณ€์ˆ˜ ์ด๋ฆ„์„ min์œผ๋กœ ๋’€๋”๋‹ˆ ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜ min๊ณผ ๊ฒน์ณ์„œ ์ž๊พธ ์•„๋ž˜ ์—๋Ÿฌ๊ฐ€ ๋–ด๋‹ค(called object type 'int' is not a function or function pointer)

๋Œ“๊ธ€