250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 삼성
- 원서읽자
- 직무면접
- 완전탐색
- BFS
- 원서
- swexpertacademy
- 코테 준비
- 백준
- 코딩테스트
- STUDYENGLISH
- sw expert academy
- MySQL
- English
- 코테
- SQL
- readingbook
- the midnight library
- englishbook
- PyQt
- 코테 대비
- dfs
- 원서읽기
- 프로그래머스
- 알고리즘 문제
- 쉬운 알고리즘 문제
- nightroutine
- 알고리즘
- sw expert
- D4
Archives
- Today
- Total
시나브로
[백준] 체스판 다시 칠하기 본문
728x90
먼저 white로 시작하는 체스판과 black으로 시작하는 체스판을 만들어 놓고 비교한다
모든 점을 시작점으로 하는 완전 탐색을 해서 최솟값을 찾았다.
#include<stdio.h>
#include<vector>
#include<iostream>
#include <algorithm>
using namespace std;
int main(void) {
freopen("inp.inp", "r", stdin);
freopen("out.out", "w", stdout);
int white[50][50] = { 0 };
int black[50][50] = { 0 };
int board[50][50] = { 0 };
bool signal = 0;
int n = 0, m = 0;
scanf("%d %d", &n, &m);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
white[i][j] = signal;
black[i][j] = !signal;
signal = !signal;
}
if(m%2==0)
signal = !signal;
}
char box = 0;
scanf("%c", &box);
int s = 0;
int min = 1000000;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%c", &box);
if (box == 'W')
board[i][j] = 1;
else
board[i][j] = 0;
}
scanf("%c", &box);
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
int white_total = 0;
int black_total = 0;
if (i + 8 <= n&&j + 8 <= m) {
for (int q = i; q < i + 8; q++) {
for (int p = j; p < j + 8; p++) {
s = board[q][p];
if (white[q][p] != s)
white_total++;
if (black[q][p] != s)
black_total++;
}
}
if (white_total < min)
min = white_total;
if (black_total < min)
min = black_total;
}
}
}
printf("%d", min);
return 0;
}
https://www.acmicpc.net/problem/1018
728x90
'알고리즘 > 백준' 카테고리의 다른 글
1551. 수열의 변화 (0) | 2020.01.13 |
---|---|
8393 합 (0) | 2020.01.09 |
[백준] 7568번 덩치 (0) | 2019.12.31 |
[백준] 2231번 분해합 (0) | 2019.12.31 |
[백준] 2798 번 블랙잭 (0) | 2019.12.31 |
Comments