Deff_Dev
[백준] 15954번 N과 M (5) (C++) 본문
문제
https://www.acmicpc.net/problem/15654
풀이
next_permutation() 을 이용하여 조합을 구하고 해당 조합에서 순열을 구한 값들을 저장하고 오름차순으로 정렬한 후, 출력하는 방법으로 풀이했다.
#include<iostream>
#include <vector>
#include <algorithm>
// https://www.acmicpc.net/problem/15654
using namespace std;
int main() {
int n, m, sel;
cin >> n >> m;
vector <int> vec (n);
vector <bool> combination (n, true);
vector<vector<int>> answer;
for (int i = 0; i < n; i++) {
cin >> vec[i];
}
for (int i = 0; i < n - m; i++) {
combination[i] = false;
}
do {
vector <int> combinationValues;
for (int i = 0; i < n; i++) {
if (combination[i]) {
combinationValues.push_back(vec[i]);
}
}
sort(combinationValues.begin(), combinationValues.end());
do {
vector <int> result (m);
for (int i = 0; i < m; i++) {
result[i] = combinationValues[i];
}
answer.push_back(result);
} while (next_permutation(combinationValues.begin(), combinationValues.end()));
} while (next_permutation(combination.begin(), combination.end()));
sort(answer.begin(), answer.end());
for (int i = 0; i < answer.size(); i++) {
for (int j = 0; j < m; j++) {
cout << answer[i][j] << " ";
}
cout << "\n";
}
return 0;
}
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] 11724번 연결 요소의 개수 (C++) (0) | 2024.08.31 |
---|---|
[백준] 1916번 최소비용 구하기 (C++) (0) | 2024.08.30 |
[백준] 11723번 집합 (C++) (0) | 2024.08.30 |
[백준] 15686번 치킨 배달 (C++) (0) | 2024.08.29 |
[백준] 15988번 1, 2, 3 더하기 3 (C++) (0) | 2024.08.28 |