문제접근
놓쳤던 부분
•
c++에서 string끼리의 덧셈을 통해 문자열을 연결해줄 수 있다는 사실을 몰랐음,,
•
set에 대한 개념 부족으로 구현에 큰 어려움이 있었음
set은 중복을 제거해주고 정렬을 자동을 해주게 된다
unordered_set은 정렬을 해주지 않는다
코드
2288 KB
0 ms
#include <iostream>
#include <vector>
#include <unordered_set>
#include <string>
int n, k;
std::unordered_set<std::string> answer;
std::vector<int> input_arr;
std::vector<int> visited;
void input_setting()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
std::cout.tie(0);
}
void input()
{
std::cin >> n >> k;
input_arr.resize(n);
visited.resize(n, 0);
for (int i = 0; i < n; i++)
std::cin >> input_arr[i];
}
void solution(std::string card, int count)
{
if (count != k)
{
for (int i = 0; i < n; i++)
{
if (visited[i] == 0)
{
visited[i] = 1;
solution(card + std::to_string(input_arr[i]), count + 1);
visited[i] = 0;
}
}
}
else
answer.insert(card);
}
int main(void)
{
input_setting();
input();
solution("", 0);
std::cout << answer.size();
return (0);
}
C++
복사