입력 코드
#include <stdio.h>
#define minF(a,b) a<b? a:b
main() {
int N, M;
scanf("%d %d", &N, &M);
char C[50][50];
int min = 80;
int cntB = 0, cntW = 0;
for (int i = 0; i < N; i++) {
scanf("%s", &C[i]);
}
for (int i = 0; i + 7 < N; i++) {
for (int j = 0; j + 7 < M; j++) {
cntB = 0;
cntW = 0;
for (int a = i; a < i + 8; a++) {
for (int b = j; b < j + 8; b++) {
if ((a + b) % 2 == 0) {
if (C[a][b] == 'B')
cntW++;
else
cntB++;
}
else {
if (C[a][b] == 'B')
cntB++;
else
cntW++;
}
}
}
min = minF(min, cntB);
min = minF(min, cntW);
}
}
printf("%d\n", min);
}
코드 설명
#브루트포스 알고리즘
main() {
int N, M;
scanf("%d %d", &N, &M);
int C[52][52];
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
scanf("%s", C[i][j]);
}
}
int count = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
if (C[i][j] == C[i][j + 1])
count++;
}
}
}
처음에는 뭘 어떻게 해야 할지 감도 안 왔다.
#include <stdio.h>
#include <string.h>
char white[8][8] = { "WBWBWBWB","WBWBWBWB","WBWBWBWB","WBWBWBWB",
"WBWBWBWB","WBWBWBWB","WBWBWBWB","WBWBWBWB" };
char black[8][8] = { "BWBWBWBW","BWBWBWBW","BWBWBWBW","BWBWBWBW",
"BWBWBWBW","BWBWBWBW","BWBWBWBW","BWBWBWBW" };
char C[52][52];
int whitefirst(int x, int y) {
int count = 0;
for (int i = x; i < x + 8; i++) {
for (int j = y; j < y + 8; j++) {
if (C[i][j] != white[i - x][j - y])
count++;
}
}
return count;
}
int blackfirst(int x, int y) {
int count = 0;
for (int i = x; i < x + 8; i++) {
for (int j = y; j < y + 8; j++) {
if (C[i][j] != black[i - x][j - y])
count++;
}
}
return count;
}
int min(int a, int b) {
if (a >= b)
return b;
else
return a;
}
main() {
int N, M;
int result;
scanf("%d %d", &N, &M);
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
scanf("%s", &C[i][j]);
}
}
for (int i = 0; i + 7 < N; i++) {
for (int j = 0; j + 7 < M; j++) {
result = min(whitefirst(N, M), blackfirst(N, M));
}
}
printf("%d", result);
}
① 그래서 찾아봤더니 처음 시작할 때 맨 왼쪽 위 칸이 흰색인 경우와 검은색인 경우를 정해놓고 두 가지 경우와 비교하면서 count를 세는 방법도 있고,
↓↓↓ 참고한 사이트
② 인덱스를 이용해서 0인 구역과 1인 구역을 나누어서 따로 count를 세고 마지막에 최소값을 구하는 방법이 있다. 처음에는 이 방법 자체가 이해가 안돼서 위에 방법으로 시도해보려고 했으나 실패했다. 사실 아직도 잘 모르겠다..★★
↓↓↓ 참고한 사이트
hydroponicglass.tistory.com/31
2차원 배열 초기화
blog.naver.com/1stwook/30182859109
문제 출처
'C' 카테고리의 다른 글
#52. [백준_C언어] 1920 : 수 찾기 (0) | 2021.01.27 |
---|---|
#51. [백준_C언어] 1181 : 단어 정렬 (0) | 2021.01.27 |
#49. [백준_C언어] 2740 : 행렬 곱셈 (0) | 2021.01.26 |
#48. [백준_C언어] 5086 : 배수와 약수 (0) | 2021.01.25 |
#47. [백준_C언어] 2750 : 수 정렬하기 (0) | 2021.01.25 |