Search
📒

카드놓기

주차
문제번호
5568
언어
티어
실버
유형
자료구조
브루트포스
재귀
해시를 사용한 집합과 맵
nj_Blog
nj_상태
이해도
66%
풀이
사람
이해도 2
13 more properties

문제접근

놓쳤던 부분

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++
복사