csct3434
[level 2] 줄 서는 방법 - 12936 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <vector>
using namespace std;
vector<int> solution(int n, long long k) {
if (n == 1) {
return {1};
}
vector<int> answer(n, 0);
int index = 0;
long long a = 1;
vector<int> digits;
for (int i = 1; i <= n; i++) {
a *= i;
digits.push_back(i);
}
while (n > 2) {
a /= n--;
int subSequence = static_cast<int>(1 + (k - 1) / a);
answer[index++] = digits[subSequence - 1];
digits.erase(digits.begin() + (subSequence - 1));
k -= (subSequence - 1) * a;
}
if (k == 1) {
answer[index++] = digits[0];
answer[index] = digits[1];
} else {
answer[index++] = digits[1];
answer[index] = digits[0];
}
return answer;
}
'프로그래머스' 카테고리의 다른 글
[level 2] 최솟값 만들기 - 12941 (0) | 2024.02.28 |
---|---|
[level 2] 최댓값과 최솟값 - 12939 (0) | 2024.02.28 |
[level 2] 숫자의 표현 - 12924 (0) | 2024.02.28 |
[level 2] 숫자 블록 - 12923 (0) | 2024.02.28 |
[level 2] 멀리 뛰기 - 12914 (0) | 2024.02.28 |