분할정복 문제
재귀 연습 문제
실수한 부분
- 문자열로 주어지는 걸 int 이중배열로 받으려고 해서 헤맴
#include<iostream>
#include<vector>
#include<string>
using namespace std;
// 0 = 흰색, 1= 검정
int n;
char board[65][65];
vector<char> ans;
void func(int row, int col, int size){
char cur = board[row][col];
bool devide = false;
for(int i =row;i<row+size;i++){
for(int j =col;j<col+size;j++){
if(cur!= board[i][j]){
devide =true;
}
}
}
if(devide == false){ //하나의 값을 발견
ans.push_back(cur);
}else{
int newS = size/2;
for(int i =0;i<2;i++){
for(int j =0;j<2;j++){
if(i==0&&j==0){
ans.push_back('(');
}
func(row+newS*i,col+newS*j,newS);
if(i==1&&j==1){
ans.push_back(')');
}
}
}
}
}
//한 덩어리에 대해 왼쪽위 오른쪽위 왼족 아래 오른족 아래 순서로 0,1 표현
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n;
for(int i =0;i<n;i++){
for(int j =0;j<n;j++){
cin>>board[i][j];
}
}
func(0,0,n);
for(int i=0;i<ans.size();i++){
cout <<ans[i];
}
}'백준 문제풀이' 카테고리의 다른 글
| [백준/boj] 1043번: 거짓말 | C++ (0) | 2024.02.26 |
|---|---|
| [백준/boj] 11501번: 주식 | C++ (0) | 2024.02.23 |
| [백준/boj] 1012번: 유기농 배추 | C++ (1) | 2024.01.07 |
| [백준/boj] 2178번: 미로 탐색 | C++ (1) | 2023.12.30 |
| [백준/boj] 2504번: 괄호의 값 | C++ (1) | 2023.12.29 |