1992 - 쿼드트리

재찬·2023년 1월 27일
0

Algorithm

목록 보기
22/64

문제

코드

#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
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 = "";
	bool flag = 0;
	
	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(){
	cin >> n;
	for(int i = 0; i <n; i++){
		for(int j = 0; j < n; j++){
			cin >> a[i][j];
		}
	}
	
	cout << quard(0,0, n) << '\n';
	return 0;
}

풀이 과정

결과

후기

재귀함수라는 부분을 캐치했지만 어떻게 반복을 시켜야할지 감이 잘 오지 않았다.
막상 로직이 생각보다는 간단했지만 쉽게 생각해내기는 어렵다.
이게 실버 1이라니 믿기지가 않았다...

0개의 댓글