안녕 세상아,

[c++/백준] 15654 N과 M (5) 본문

백준

[c++/백준] 15654 N과 M (5)

돈 많은 백수가 되고싶다 2023. 5. 11. 18:04

https://www.acmicpc.net/problem/15654

 

15654번: N과 M (5)

N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열

www.acmicpc.net

이번 시리즈는 새로운 배열을 하나 만들고 입력받는 그러한 과정만 거치면 N과 M (1)과 똑같다.

배열 값을 입력 받은 후 sort만 해주면 된다.

계속 풀다보니까 백트래킹을 100중에 3정도는 알 것 같은 느낌이다.

 

다양한 문제를 더 풀다보면 갑자기 어느순간 확 느는 느낌을 받을 수 있길 바라며..

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int arr[10];	//입력 받는 배열
int ans[10];
bool isVisited[10] = { false };
int n, m;

void dfs(int depth) {
	if (depth == m) {
		for (int i = 0; i < m; i++) {
			cout << ans[i] << " ";
		}
		cout << '\n';
	}
	for (int i = 0; i < n; i++) {
		if (!isVisited[i]) {
			isVisited[i] = true;
			ans[depth] = arr[i];
			dfs(depth + 1);
			isVisited[i] = false;
		}
	}
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	cin >> n >> m;
	for (int i = 0; i < n; i++) {
		cin >> arr[i];
	}
	sort(arr, arr + n);		//작은 수부터 나오게 하기 위함

	dfs(0);
}

N과 M 시리즈 절반정도 한듯해요,,

11정도까지 확인했는데 더 있을지도 모름.. 근데 풀다보니까 복습도 되고 조금씩 감을 잡는 느낌적인 느낌이라 10 넘어가도 풀어볼듯 ? ㅎㅎ 넘 뇌절인가 암튼 도움은 확실히 되는듯

'백준' 카테고리의 다른 글

[c++/백준] 1004 어린 왕자  (0) 2023.05.12
[c++/백준] 10974 모든 순열  (0) 2023.05.11
[c++/백준] 14425 문자열 집합  (0) 2023.05.11
[c++/백준] 9375 패션왕 신해빈  (0) 2023.05.11
[c++/백준] 11726 2*n 타일링  (0) 2023.05.10