728x90
0. [c++] 백준 - |
https://www.acmicpc.net/problem/
1. 풀이 |
주어진 사각형을 자를 수 있는 모든 방법으로 나눈 다음, 만들어야 하는 체스판 모양과 비교를 해서 답을 구해냈다.
2. 소스코드 |
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #include<iostream> #include<string> #include<algorithm> using namespace std; string board[51]; string object[2] = { "WBWBWBWB", "BWBWBWBW" }; int Min = 64; void countChange(int start_x, int start_y) { int count = 0; for (int y = start_y; y < start_y + 8; y++) for (int x = start_x; x < start_x + 8; x++) if (object[y % 2][x - start_x] != board[y][x]) count++; Min = min(Min, count); count = 0; for (int y = start_y; y < start_y + 8; y++) for (int x = start_x; x < start_x + 8; x++) if (object[(y + 1) % 2][x - start_x] != board[y][x]) count++; Min = min(Min, count); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int N, M; cin >> N >> M; for (int i = 0; i < N; i++) { cin >> board[i]; } for (int y = 0; y <= N - 8; y++) for (int x = 0; x <= M - 8; x++) countChange(x, y); cout << Min << endl; return 0; } | cs |
3. 참고 |
구종만, 「프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략」, 인사이트, 2012, p.216~236.
질문이나 지적 있으시면 댓글로 남겨주세요~
도움 되셨으면 하트 꾹!
'<백준> > |c++| easy' 카테고리의 다른 글
[c++] 백준 1085 - 직사각형에서 탈출(단순 if문) (0) | 2019.06.12 |
---|---|
[c++] 백준 1436 - 영화감독 숌(무식하게 풀기, brute force) (0) | 2019.06.12 |
[c++] 백준 11365 - !밀비 급일(getline을 활용해 한줄 읽기, char to string) (0) | 2019.06.12 |
[c++] 백준 2902 - KMP는 왜 KMP일까? (0) | 2019.05.29 |
[c++] 백준 10451 - 순열 사이클(DFS) (0) | 2019.05.14 |