https://www.acmicpc.net/problem/1038
최댓값을 987654321로 생각하고 풀었다.
아무리 해도 안되길래 질문 내용보고 9876543210 인걸 알았다.
능지
더보기
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
cin >> n;
if (n < 10) {
cout << n;
return 0;
}
if (n == 1022) {
cout << 9876543210;
return 0;
}
if (n > 1021) {
cout << -1;
return 0;
}
vector<vector<vector<int>>> dp;
//[자릿수][시작하는수][숫자들(push)]
int cnt = 0;
n -= 10;
dp.resize(10);
for (int i = 0; i <= 9; i++) {
dp[0].resize(10);
dp[0][i].push_back(i);
}
int mask = 1;
for (int i = 1; ; i++) {
mask *= 10;
for (int j = 1; j <= 9; j++) {
dp[i].resize(11);
for (int k = 0; k < j; k++) {
for (auto d : dp[i - 1][k]) {
dp[i][j].push_back(j * mask + d);
//cout << cnt << " " << j * mask + d << "\n";
if (cnt++ == n) {
cout << j * mask + d;
return 0;
}
}
}
}
}
return 0;
}
'Algorithm > Algorithm 문제 풀이' 카테고리의 다른 글
[BAE/<JOON> 문제풀이] 5582. 로봇 조종하기 (0) | 2020.06.02 |
---|---|
[BAE/<JOON> 문제풀이] 2352. 반도체 설계 (0) | 2020.06.01 |
[BAE/<JOON> 문제풀이] 9084. 동전 (0) | 2020.05.30 |
[BAE/<JOON> 문제풀이] 11060. 점프점프 (0) | 2020.05.29 |
[BAE/<JOON> 문제풀이] 2302. 극장좌석 (0) | 2020.05.28 |