(백준 알고리즘 문제풀이) 1992번 퀴드트리
by 줌코딩
문제
어떻게 접근할 것인가?
- 이건 Recursive로 쪼갠다음에 결과값을 확인하고 Return 해주는 식으로 하는 문제이다.
코드
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
char** arr;
string divide(int n, int startx, int starty){
if(n == 1) {
string x = "";
x+=arr[startx][starty];
return x;
}
string s = divide(n/2, startx, starty) + divide(n/2, startx, starty + n/2) + divide(n/2, startx + n/2, starty) + divide(n/2, startx+n/2, starty+n/2);
if(s.compare("1111") == 0 ) return "1";
else if(s.compare("0000") == 0) return "0";
else return "(" + s + ")";
}
int main() {
int N;
string line;
cin >> N;
arr = new char*[N];
for(int i = 0; i < N; i++)arr[i] = new char[N];
for(int i = 0; i < N; i++){
cin >> line;
for(int j = 0; j < N; j++){
arr[i][j] = line[j];
}
}
cout << divide(N, 0, 0) << endl;
}
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
Subscribe via RSS