Programmers 12936
줄 서는 방법


CODE ⌨️

#include <string>
#include <vector>

using namespace std;
typedef long long ll;

ll ftrl[21];
bool visited[21];

vector<int> solution(int n, long long k)
{
	vector<int> answer(n);

	ftrl[0] = 1;

	for (int i = 1; i <= 20; i++)
	{
		ftrl[i] = ftrl[i - 1] * i;
	}

	for (int i = 0; i < n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			if (visited[j]) continue;

			if (k > ftrl[n - i - 1])
			{
				k -= ftrl[n - i - 1];
			}
			else
			{
				visited[j] = true;
				answer[i] = j;
				break;
			}
		}
	}

	return answer;
}



RESULT 💛



SIMPLE DISCUSSION ✏️

수학 관련 문제였다. next_permutation을 사용하지 않고 순열을 구현해야했던 문제였으며, 팩토리얼 관련된 문제였다.



SOURCE 💎

Programmers_Link 👈 Click here


*****
NOT A TALENT ❎ NOT GIVING UP ✅
CopyRight ⓒ 2022 DCherish All Rights Reserved.