๋ฌธ์
์ฝ๋
#include <iostream>
#include <vector>
#include <stack>
#include <set>
using namespace std;
bool except[201];
vector<pair<int,int>>close;
stack<int> open;
set<string> ans;
string s;
void dfs(int index, int delete_cnt){
if(delete_cnt >= 1){
string temp = "";
for(int i=0; i<s.length(); i++){
if(!except[i]) temp+=s[i];
}
ans.insert(temp);
}
for(int i=index; i<close.size(); i++){
except[close[i].first] = 1;
except[close[i].second] = 1;
dfs(i+1, delete_cnt+1);
except[close[i].first] = 0;
except[close[i].second] = 0;
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>s;
for(int i=0; i<s.length(); i++){
if(s[i]=='(') open.push(i);
else if(s[i]==')'){
close.push_back({open.top(), i});
open.pop();
}
}
dfs(0,0);
for(auto it=ans.begin(); it!=ans.end(); it++){
cout<<*it<<'\n';
}
}
ํ์ด
๋ฐฑํธ๋ํน์ ๋น์ค์ด ๋์๋ ๋ฌธ์ ์์ต๋๋ค.
๋ฌธ์ ํ์ด์ ํต์ฌ ์์ด๋์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ด๋ฆฐ ๊ดํธ์ผ๋๋ stack์ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ๋ฃ๋๋ค.
- ๋ซํ ๊ดํธ์ผ๋๋ vector์ pairํํ๋ก ๊ดํธ์ ์์ ์ ์ฅํ๋ค.
์๋ฅผ ๋ค์ด "(0/(0))"๋ฅผ ์ ๋ ฅ์ด๋ผ๊ณ ๊ฐ์ ํ๋ฉด vector<pair<int,int>> v = { {3, 5}, {0, 6} } ์ด ๋ ๊ฒ์ ๋๋ค.
๊ทธ ํ ์ด์ ๋ฐฑํธ๋ํน์ ์ด์ฉํ์ฌ ์กฐํฉ์ ๊ตฌํ๋ฉด ๋ฉ๋๋ค. ์ ๊ฑฐํ ์๋ค์ except๋ผ๋ ๋ฐฉ๋ฌธ ๋ฐฐ์ด์ ํตํด ๊ธฐ๋กํ์์ผ๋ฉฐ, ํ๋ ์ด์์ ์์ ์ ๊ฑฐํ์ ๋ ์์์ ์ฐพ๋๋ก ์ง์ ํ์ต๋๋ค.
๋ค๋ง "( ( ( 0 ) ) ) ( 1 )" ์ ์ ๋ ฅ์ด ์ฃผ์ด์ง ๋ ๊ดํธ ์ค์์๋ ์ค๋ณต๋ ํํ๊ฐ ์กด์ฌํ ์ ์์ต๋๋ค.
- ๊ฐ์ฅ ๋ฐ๊นฅ์ชฝ๋ถํฐ 1, 2, 3๋ฒ์ผ๋ก ์์๋๋ก ๋ฒํธ๋ฅผ ๋ถ์ฌ๋ดค์ ๋,
- 1๋ฒ ๊ดํธ๋ง ์ ๊ฑฐํ๊ณ ์ถ๋ ฅํ ๊ฒฐ๊ณผ = ( ( 0 ) ) ( 1 )
- 2๋ฒ ๊ดํธ๋ง ์ ๊ฑฐํ๊ณ ์ถ๋ ฅํ ๊ฒฐ๊ณผ = ( ( 0 ) ) ( 1 )
- 3๋ฒ ๊ดํธ๋ง ์ ๊ฑฐํ๊ณ ์ถ๋ ฅํ ๊ฒฐ๊ณผ = ( ( 0 ) ) ( 1 )
- ์ถ์ฒ: https://yabmoons.tistory.com/352
๋ฐ๋ผ์ set์ ์ด์ฉํ์ฌ ์ค๋ณต์ ์ ๊ฑฐํด ์ฃผ์๊ณ , ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฌธ์ ์์ "์๋ก ๋ค๋ฅธ ์์ ์ฌ์ ์์ผ๋ก ์ถ๋ ฅํ๋ค." ์กฐ๊ฑด ๋ํ set์ ์ด์ฉํ๋ฉด ์ค๋ฆ์ฐจ์์ผ๋ก ์๋์ผ๋ก ์ ๋ ฌ์ด ๋๊ธฐ์ ๊ฐํธํ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 5397๋ฒ - ํค๋ก๊ฑฐ (0) | 2022.06.03 |
---|---|
[๋ฐฑ์ค,c++] 1918๋ฒ - ํ์ ํ๊ธฐ์ (0) | 2022.06.03 |
[๋ฐฑ์ค,c++] 2493๋ฒ - ํ (0) | 2022.06.03 |
[๋ฐฑ์ค,c++] 17141๋ฒ - ์ฐ๊ตฌ์ 2 (0) | 2022.05.27 |
[๋ฐฑ์ค,c++] 1331๋ฒ - ๋์ดํธ ํฌ์ด (0) | 2022.05.08 |
[๋ฐฑ์ค,c++] 1268๋ฒ - ์์ ๋ฐ์ฅ ๊ตฌํ๊ธฐ (0) | 2022.05.07 |
๋๊ธ