๋ฌธ์
์ฝ๋
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int N; cin>>N;
while(N--){
string inp; cin>>inp;
sort(inp.begin(), inp.end());
do{
cout<<inp<<'\n';
}while(next_permutation(inp.begin(), inp.end()));
}
}
ํ์ด
ํด๋น ์ํ๋ฒณ์ผ๋ก ๋ง๋ค ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํ๋ ์์ด ๋ฌธ์ ์๋๋ฐ next_permutation์ ์ฌ์ฉํด์ ๊ตฌํํ์ต๋๋ค. ์ฒ์์ ์๋์ ๊ฐ์ด ์ง์ ์์ด์ ๊ตฌํํ๋๋ฐ ๊ณ์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํด์ ๋ฐฉ์์ ์ฐพ์ง ๋ชปํ๊ณ next_permutation์ ์ฌ์ฉํ์ต๋๋ค.
#include <iostream>
#include <vector>
#include <memory.h>
#include <algorithm>
#include <unordered_map>
using namespace std;
vector<string> ans;
bool visited[100001];
unordered_map<string,int> check;
void dfs(string make, string inp){
if(inp.length() == make.length()){ // ๋ฐ๋ก๋ฐ๋ก ์ถ๋ ฅํด์ผ ํ๋ค. ์ ์ฅํ ํ์ ์ถ๋ ฅํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ ๋ฐ์
if(!check[make]){
check[make]++;
cout<<make<<'\n';
return;
}
}
for(int i=0; i<inp.length(); i++){
if(visited[i]) continue;
visited[i] = 1;
dfs(make+inp[i], inp);
visited[i] = 0;
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int N; cin>>N;
for(int i=0; i<N; i++){
string inp; cin>>inp;
sort(inp.begin(), inp.end()); // ์ ๋ ฌ์ ํ ํ์ ๋ฐฑํธ๋ํน์ ๋๋ฆฌ์.
dfs("", inp);
memset(visited, 0 ,sizeof(visited));
}
}
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 20955๋ฒ - ๋ฏผ์์ ์๊ธ ์์ (0) | 2022.08.23 |
---|---|
[๋ฐฑ์ค,c++] 18429๋ฒ - ๊ทผ์์ค (0) | 2022.08.23 |
[๋ฐฑ์ค,c++] 15658๋ฒ - ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (2) (0) | 2022.08.23 |
[๋ฐฑ์ค,c++] 3980๋ฒ - ์ ๋ฐ ๋ช ๋จ (0) | 2022.08.21 |
[๋ฐฑ์ค,c++] 2580๋ฒ - ์ค๋์ฟ (0) | 2022.08.21 |
[๋ฐฑ์ค,c++] 2661๋ฒ - ์ข์์์ด (0) | 2022.08.21 |
๋๊ธ