반응형
문제 출처 :
https://www.acmicpc.net/problem/1038
알고리즘 분석 :
문제 해결에 필요한 사항
1. 브루트 포스
이 문제는 내가 방금 찍고 들어간 값보다 작은 값들로 구성된 수들만 계속해서 만들어주고
마지막에 한번 정렬을 해준 후 정답을 구하면 된다.
이때 내가 지금 가지고있는 값들 크기보다 n이 크다면 -1, 그리고 9876543210은 int 범위를 넘어서니 long long으로 잡아주면 된다.
소스 코드 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #include <iostream> #include <cstdio> #include <algorithm> #include <vector> #include <string> using namespace std; vector<long long> vc; void solve(string num) { int end = num[num.size() - 1] - '0'; vc.push_back(stoll(num)); for (int i = end - 1; i >= 0; i--) { num += (char)(i + '0'); solve(num); num.pop_back(); } } int main() { for (int i = 9; i >= 0; i--) { visit[i] = true; string str = ""; str += (char)(i + '0'); solve(str); visit[i] = false; } sort(vc.begin(), vc.end()); int n; scanf("%d", &n); return !printf("%lld", n >= vc.size() ? -1 : vc[n]); } // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
반응형
'Applied > 알고리즘 문제풀이' 카테고리의 다른 글
[16236번] 아기 상어 (4) | 2018.10.21 |
---|---|
[14890번] 경사로 (0) | 2018.09.27 |
[16159번] 전광판의 숫자 (0) | 2018.09.22 |
[15965번] K번째 소수 (0) | 2018.09.21 |
[9882번] Balanced Teams (0) | 2018.09.21 |