반응형
728x170
어렵지 않았다.
다만 머리로 아 어떡하지? 중복제거 어떡하지??
set 생각날 때까지 어려웠다.
https://www.acmicpc.net/problem/5568
#맞은 풀이
#include <bits/stdc++.h>
using namespace std;
int n,k;
set<int> numbers;
vector<int> card;
bool check[10];
//카드를 고르면서 정수를 만듬.
void func(int cnt, string s){
if(cnt == k){
numbers.insert(stoi(s)); //1,3 과 13은 자리를 바꿔도 같은 정수라 중복 제거해야함.
//set 이용
return;
}
for(int i=0; i<n; i++){
if(check[i] == true)continue;
check[i] = true;
string after = s;
after += to_string(card[i]); //다음에 고른 수를 뒤에 추가
func(cnt+1, after);
check[i] = false;
}
}
int main(){
cin >> n >> k;
for(int i=0; i<n; i++){
int x;
cin >> x;
card.push_back(x);
}
func(0,"");
cout << numbers.size();
return 0;
}
어렵지 않았다.
728x90
반응형
그리드형
'문제풀이(Problem Solving)' 카테고리의 다른 글
백준, BOJ, 15686번, 치킨 배달 : C++ [CPP] ★★★★★ (0) | 2022.01.08 |
---|---|
백준, BOJ, 5573번, 산책 : C++ [CPP] (0) | 2022.01.07 |
백준, BOJ, 2243번, 사탕상자 : C++ [CPP] (0) | 2022.01.06 |
백준, BOJ, 1713번, 후보 추천하기 : C++ [CPP] (0) | 2022.01.06 |
백준, BOJ, 1665번, 가운데를 말해요 : C++ [CPP] (0) | 2022.01.05 |