알고리즘, 코테 준비

백준 1174 - 줄어드는 수

Multitab 2022. 10. 11. 23:22

문제링크 : https://www.acmicpc.net/problem/1174
알고리즘 종류 : 백트래킹
솔? : 보고 함
핵심 아이디어 : 줄어드는 수의 특성을 잘 생각해서 풀어야함

#include <bits/stdc++.h>
using namespace std;

int N;
string num = "0123456789";
vector<long long> correct;

void backtracking(int idx, string temp) {

    if (!temp.empty()) {
        string _temp = temp;
        reverse(_temp.begin(), _temp.end());
        correct.push_back(stoll(_temp));
    }

    for (int i = idx + 1; i < 10; i++) {
        temp += num[i];
        backtracking(i, temp);
        temp.pop_back();
    }
}

int main() {
    scanf("%d", &N);

    for (int i = 0; i < 10; i++) {
        string temp = "";
        backtracking(i, temp += num[i]);
    }

    sort(correct.begin(), correct.end());

    if (N > correct.size()) {
        printf("%d", -1);
    }
    else { 
        cout << correct[N - 1];
    }

}

후기 : 하.. 이런 생각을 어떻게 하지?

잘설명된 링크 (이건 거의 배꼈음..): https://dkswnkk.tistory.com/607

'알고리즘, 코테 준비' 카테고리의 다른 글

문자열  (1) 2022.11.06
알고리즘 종류와 유형  (0) 2022.11.06
백준1068 - 트리  (2) 2022.10.07
백준22856 - 트리순회  (0) 2022.10.06
백준15486 - 퇴사2  (0) 2022.10.05