์ค๋ฒ1 : ๊ตฌํ ๋ฌธ์ ์ด๋ค.
๋๋ฌด ์ง์ฆ๋๋ค. ๋ฌธ์ ์ ๋๋ก ์ฝ์ด. ์ ๋ฐ์ ๋ฐ์ ญ๋ผ..
- ๋ฑ์ด ์ง๋๊ฐ๋ ๊ฒฝ๋ก๋ฅผ ์ก์์ค ์๋ฃ๊ตฌ์กฐ
- map์ ํ์ํด์ ๊ฐ ์ ์๋์ง ์๋์ง ์์์ผ ํ๋ค.
- tail์ ์์น๋ฅผ trackingํ ์ ์์ด์ผ ํ๋ค. โ queue
- ์๊ฐ
- ํ์ฌ ๋ณด๊ณ ์๋ ๋ฐฉํฅ
- ๋ฐฉํฅ์ ๋ฐ๋ฅธ ์ฐํ์ ์ขํ์
- action์ ์๋ ค์ค ๋ฐฉํฅ
Code
//
// main.cpp
// algorithm_prac
//
// Created by ์ต์์ on 2021/04/05.
//
#include <iostream>
#include <vector>
using namespace std;
int N;
int map[64][64];
vector<char> ans;
void go(int sy, int sx, int d){
int setN = map[sy][sx];
int flag = 0;
for (int i = sy; i < sy+d; i++) {
for (int j = sx; j < sx+d; j++) {
if (setN != map[i][j]) {
flag = -1;
break;
}
}
if (flag == -1) break;
}
if (flag == 0) ans.push_back(setN + '0');
else {
ans.push_back('(');
go(sy, sx, d/2);
go(sy, sx+d/2, d/2);
go(sy+d/2, sx, d/2);
go(sy+d/2, sx+d/2, d/2);
ans.push_back(')');
}
}
int main(){
cin >> N;
for (int i = 0; i < N; i++) {
char temp[64];
cin >> temp;
for (int j = 0; j < N; j++) {
map[i][j] = temp[j] - '0';
}
}
go(0, 0, N);
for (int i = 0; i < int(ans.size()); i++) {
cout << ans[i];
}
return 0;
}