728x90
1) 주석 없는 VERSION
#include <iostream>
#include <cmath>
#include <stdio.h>
#include <utility>
#include <string>
#include <algorithm>
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 board[50];
int WB_cnt(int x, int y) {
int 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]) {
cnt++;
}
}
}
return cnt;
}
int BW_cnt(int x, int y) {
int 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]) {
cnt++;
}
}
}
return cnt;
}
int main() {
int size[2];
int cnt;
int min_val = 12345;
pair<int, int>p1;
cin >> p1.first >> p1.second;
for (int i = 0;i < p1.first;i++) {
cin >> board[i];
}
for (int i = 0;i + 8 <= p1.first;i++) {
for (int j = 0;j + 8 <= p1.second;j++) {
int tmp;
tmp = min(WB_cnt(i, j), BW_cnt(i, j));
if (tmp < min_val) {
min_val = tmp;
}
}
}
cout<<min_val;
return 0;
}
2) 주석 있는 VERSION
#include <iostream>
#include <cmath>
#include <stdio.h>
#include <utility>
#include <string>
#include <algorithm>
using namespace std;
// W부터 시작하는 경우의 체스판
string WB[8] = {
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW"
};
// B부터 시작하는 경우의 체스판
string BW[8]{
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB",
"BWBWBWBW",
"WBWBWBWB"
};
// 입력값으로 받아올 보드
string board[50];
// W부터 시작하는 경우에 WB 보드와 비교
int WB_cnt(int x, int y) {
int cnt = 0;
for (int i = 0;i < 8;i++) {
for (int j = 0;j < 8;j++) {
// 다른 것이 있는 경우 count 세기
if (board[x + i][y + j] != WB[i][j]) {
cnt++;
}
}
}
return cnt;
}
// B부터 시작하는 경우에 BW 보드와 비교
int BW_cnt(int x, int y) {
int cnt = 0;
for (int i = 0;i < 8;i++) {
for (int j = 0;j < 8;j++) {
// 다른 것이 있는 경우 count 세기
if (board[x + i][y + j] != BW[i][j]) {
cnt++;
}
}
}
return cnt;
}
int main() {
int size[2];
int cnt;
int min_val = 12345;
pair<int, int>p1;
cin >> p1.first >> p1.second;
// 행의 개수만큼 입력 받기
for (int i = 0;i < p1.first;i++) {
cin >> board[i];
}
for (int i = 0;i + 8 <= p1.first;i++) {
for (int j = 0;j + 8 <= p1.second;j++) {
int tmp;
// W부터 시작하는 경우와 B부터 시작하는 경우의 수 중
// 더 작은 숫자 리턴
tmp = min(WB_cnt(i, j), BW_cnt(i, j));
if (tmp < min_val) {
min_val = tmp;
}
}
}
cout<<min_val;
return 0;
}
'BEAKJOON' 카테고리의 다른 글
백준(2750번 수 정렬하기)풀이 C++ (0) | 2021.01.17 |
---|---|
백준(1436번 영화감독 숌)풀이 C++ (0) | 2021.01.17 |
백준(7568번 덩치)풀이 C++ (1) | 2021.01.15 |
백준(2231번 분해합)풀이 C++ (0) | 2021.01.15 |
백준(2798번 블랙잭)풀이 C++ (0) | 2021.01.15 |