백준 #1992 쿼드트리
2022. 1. 15. 00:49ㆍ백준 문제풀이
반응형
백준 1992번 쿼드 트리 문제이다.
그래프를 활용한 문제로, 재귀를 이용하면 해결할 수 있는 문제이다.
처음 문제를 보면 문제가 잘 이해가 가지 않는데,
위에 그림으로 준 예시와, 예제를 잘 들여다 보면 쉽게 파악할 수 있다.
정사각형을 한 뭉텅이로 보고 문제 해결을 시도하면 된다.
첫 번째 입력에서 전체 행의 개수를 주기 때문에,
행의 개수를 점차 적으로 줄여나가면서 문제를 해결할 수 있다.
#include <iostream>
#include <string>
using namespace std;
int n;
string s;
char a[101][101];
string quard(int y, int x, int size ){
if(size == 1) return string(1,a[y][x]);
char b = a[y][x];
string ret = "";
for(int i = y; i < y + size; i++) {
for(int j = x; j < x + size; j++) {
if(b != a[i][j]) {
ret += '(';
ret += quard(y,x, size / 2);
ret += quard(y, x + size / 2 , size / 2);
ret += quard(y + size/ 2, x, size / 2);
ret += quard(y + size/ 2, x + size/2, size / 2);
ret += ')';
return ret;
}
}
}
return string(1, a[y][x]);
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(NULL);
cin >> n;
for(int i = 0; i < n; i++) {
cin >> s;
for(int j = 0; j < n; j++) {
a[i][j] = s[j];
}
}
cout << quard(0,0,n) << '\n';
return 0;
}
반응형
'백준 문제풀이' 카테고리의 다른 글
백준 #2807 수학숙제 (0) | 2022.01.18 |
---|---|
백준 #4659 비밀번호 발음하기 (0) | 2022.01.17 |
#1697 백준 숨바꼭질 코드 C++ (0) | 2021.07.20 |
#7662 백준 이중 우선순위 큐 C++ (0) | 2021.07.20 |
백준 #17087 숨바꼭질6 문제 풀이 C++ (0) | 2021.05.24 |