Doby's Lab

백준 9742번: 순열 (C++) 본문

PS/BOJ

백준 9742번: 순열 (C++)

도비(Doby) 2022. 5. 4. 23:43

https://www.acmicpc.net/problem/9742

 

9742번: 순열

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 문자열은 서로 다른 숫자와 알파벳으로 이루어져 있으며, 길이는 최대 10이다. 또한, 사전

www.acmicpc.net


Solved By: BackTracking

 

찾아야 하는 순서가 백트래킹으로 구해지는 순서 안에 있다면 결과 string에 해당 문자열을 할당해주고, 아니라면 빈 문자열을 반환하도록 아무것도 할당하지 않았습니다.

#include <iostream>
#include <vector>
using namespace std;

string s;
int n;
int cnt;
string res;
bool visited[10];

void backTracking(string a){
    if(a.size() == s.size()){
        ++cnt;
        if(cnt == n){
            res = a;
        }
        
        return;
    }
    
    for(int i = 0; i < s.size(); i++){
        if(!visited[i]){
            visited[i] = true;
            backTracking(a + s[i]);
            visited[i] = false;
        }
    }
}

int main(){
    while(cin >> s >> n){
        cnt = 0; res = "";
        cout << s << ' ' << n << " = ";
        backTracking("");
        if(res == "") cout << "No permutation";
        else cout << res;
        cout << '\n';
    }
}
728x90

'PS > BOJ' 카테고리의 다른 글

백준 15203번: Police Station (C++)  (0) 2022.05.05
백준 13059번: Tourists (C++)  (0) 2022.05.05
백준 7742번: Railway (C++)  (0) 2022.05.03
백준 3176번: 도로 네트워크 (C++)  (0) 2022.05.03
백준 1761번: 정점들의 거리 (C++)  (0) 2022.05.03