next_permutation()을 통해 조합을 만드는 방법에 대해서 또 다시 공부해야겠다.
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <set>
using namespace std;
void input_card(vector<int>& card, int *num)
{
int N, i, temp;
cin >> N;
cin >> *num;
for (i = 0; i < N; i++)
{
cin >> temp;
card.push_back(temp);
}
sort(card.begin(), card.end());
return;
}
void find_answer(vector<int>& card, int num)
{
set<string> answer;
int ans, i;
do {
string str;
for (i = 0; i < num; i++)
{
str += to_string(card[i]);
}
answer.insert(str);
} while (next_permutation(card.begin(), card.end()));
ans = answer.size();
cout << ans << "\n";
return;
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
vector<int> card;
int num;
input_card(card, &num);
find_answer(card, num);
return 0;
}