๋ฌธ์
17255๋ฒ: N์ผ๋ก ๋ง๋ค๊ธฐ
์์ด ์๋ ์ ์ N์ด ์ฃผ์ด์ง๋ค. (0 ≤ N ≤ 10,000,000)
www.acmicpc.net
์ฝ๋
#include <iostream>
#include <map>
#include <set>
using namespace std;
string s;
map<set<string>,int> visited;
void dfs(int left, int right, string now, set<string> temp){
if(now.length()>=s.length()){
if(now == s) visited[temp] = 1;
return;
}
if(left>0){
temp.insert(s[left-1]+now);
dfs(left-1, right, s[left-1]+now, temp);
temp.erase(s[left-1]+now);
}
if(right<s.length()){
temp.insert(now+s[right+1]);
dfs(left, right+1, now+s[right+1], temp);
temp.erase(now+s[right+1]);
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>s;
for(int i=0; i<s.length(); i++){
string temp = "";
set<string> set_temp = {temp+s[i]};
dfs(i,i, temp+s[i], set_temp);
}
cout<<visited.size();
}
ํ์ด
์ผ๋จ N์ ์ต๋ ๊ธธ์ด๊ฐ 8๋ฐ์ ๋์ง ์๊ธฐ ๋๋ฌธ์ ์ถฉ๋ถํ ๋ฐฑํธ๋ํน์ ์ด์ฉํด์ ํ ์ ์๋ ๋ฌธ์ ์ ๋๋ค.
๋ค๋ง ์กฐ๊ฑด์์ "์ซ์๋ฅผ ์ ๋ ๊ณผ์ ์์ ๋์จ ์๊ฐ ์์๋๋ก ๋ชจ๋ ๊ฐ๋ค๋ฉด ๊ฐ์ ๋ฐฉ๋ฒ์ด๋ค." ๋ผ๊ณ ํ๊ธฐ ๋๋ฌธ์ ์ค๋ณต๋๋ ๊ณผ์ ์ ์นด์ดํ ํ์ง ์์์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ set์ ๋ง๋ ๊ณผ์ ๋ค์ ๋ด์์ ์ค๋ณต ๊ณผ์ ๋ค์ ๋ชจ๋ ์ ๊ฑฐํ๋ ๋ฐฉํฅ์ผ๋ก ํด๊ฒฐํ์ต๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 9934๋ฒ - ์์ ์ด์ง ํธ๋ฆฌ (0) | 2022.06.21 |
---|---|
[๋ฐฑ์ค,c++] 1655๋ฒ - ๊ฐ์ด๋ฐ๋ฅผ ๋งํด์ (0) | 2022.06.21 |
[๋ฐฑ์ค,c++] 12764๋ฒ - ์ธ์ง๋ฐฉ์ ๊ฐ ์คํ (0) | 2022.06.20 |
[๋ฐฑ์ค,c++] 19537๋ฒ - ์ธ์ด๋ฒ๊ฐ๊ฐ์ดํ (0) | 2022.06.20 |
[๋ฐฑ์ค,c++] 10546๋ฒ - ๋ฐฐ๋ถ๋ฅธ ๋ง๋ผํ ๋ (0) | 2022.06.19 |
[๋ฐฑ์ค,c++] 5430๋ฒ - AC (0) | 2022.06.19 |
๋๊ธ