728x90
문제 접근
1. 8x8 크기를 찾기 위해 입력받은 값에서 7만큼을 뺀 횟수만큼 반복한다(가로, 세로 모두)
2. 8x8 크기이기 때문에 시작하는 인덱스부터 8회 반복한다.
3. 체스판의 시작이 검정이라고 가정하면 인덱스의 합이 짝수은 검정이고 홀수는 흰색
4. 인덱스와 해당 칸(배열)의 색을 비교해서 맞지 않으면 cnt를 올린다
5. 흰색 count와 검은색 count의 값을 비교해서 최소값을 찾는다
6. 계속 값을 비교해서 최솟값을 출력한다.
느낀점
벽을 느낀 문제였다.
코드
#include <stdio.h>
int main() {
char board[50][50] = { 0, };
int n, m; // m은 가로, n은 세로
int min = 64;
scanf("%d %d", &n, &m);
for (int i = 0; i < n;i++) {
scanf("%s", &board[i]);
}
for (int i = 0;i < n - 7;i++) {
for (int j = 0; j < m - 7;j++) {
int cnt_b = 0, cnt_w = 0;
for (int x = i;x < i + 8;x++) {
for (int y = j;y < j + 8;y++) {
if ((x + y) % 2 == 0) {
if (board[x][y] == 'W') cnt_b++;
else cnt_w++;
}
else {
if (board[x][y] == 'W') cnt_w++;
else cnt_b++;
}
}
}
min = min > cnt_b ? cnt_b : min;
min = min > cnt_w ? cnt_w : min;
}
}
printf("%d", min);
return 0;
}
'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[C] 백준 2750번 : 수 정렬하기 (0) | 2021.04.12 |
---|---|
[C] 백준 1436번 : 영화감독 숌 (0) | 2021.04.12 |
[C] 백준 7568번 : 덩치 (0) | 2021.04.08 |
[C] 백준 2231번 : 분해합 (0) | 2021.04.06 |
[C] 백준 2798번 : 블랙잭 (0) | 2021.04.03 |
댓글