728x90
https://www.acmicpc.net/problem/1780
문제 풀이
이전 문제들과 다르게 4 분할이 아닌 9 분할이다.
이전 문제와 비슷하게 코드를 구현할 수 있지만 '-1, 0, 1'을 조금만 바꾸면 문제가 아주 쉬워진다.
각각의 숫자를 +1 해서 '0, 1, 2'로 바꾸면 카운트할 때도 출력할 때도 쉬워진다.
느낀 점
처음에 이전 문제와 비슷하게 코드를 구현했다. 코드가 길고 썩 깔끔한 구석이 없었다. 다른 분들의 코드를 비교하던 중 아주 깔끔한 코드를 발견하였고 공부해서 완벽하게 내 것으로 만들었다! 역시 코딩은 공부할수록 매력적이면서 심오한 것 같다.
코드
#include <iostream>
using namespace std;
int n;
int result[3];
int map[2188][2188];
bool check(int x, int y, int n) {
int standard = map[x][y];
for (int i = x; i < x + n;i++) {
for (int j = y; j < y + n;j++) {
if (standard != map[i][j]) return false;
}
}
return true;
}
void div_conq(int x, int y, int n) {
if (check(x, y, n)) result[map[x][y]]++;
else {
int size = n / 3;
for (int i = 0; i < 3;i++) {
for (int j = 0; j < 3;j++) {
div_conq(x + size * i, y + size * j, size);
}
}
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 0; i < n;i++) {
for (int j = 0; j < n;j++) {
cin >> map[i][j];
map[i][j]++;
}
}
div_conq(0, 0, n);
for (int i = 0; i < 3;i++) {
cout << result[i] << "\n";
}
}
'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[C++] 백준 2004번 : 조합 0의 개수 (0) | 2021.07.28 |
---|---|
[C++] 백준 1629번 : 곱셉 (0) | 2021.07.27 |
[C++] 백준 1992번 : 쿼드트리 (0) | 2021.07.27 |
[C++] 백준 2630번 : 색종이 만들기 (0) | 2021.07.27 |
[C++] 백준 5430번 : AC (0) | 2021.07.26 |
댓글