반응형
Notice
Recent Posts
Recent Comments
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
관리 메뉴

Easy-So-Easy

[백준] 15650번 N과 M (2) - C/C++ 본문

BaekJoon

[백준] 15650번 N과 M (2) - C/C++

섭_민 2023. 6. 20. 00:43
반응형

백준 15650 문제(Problem)

15650
백준 15650 문제

 

 

 

풀이(Solution)

이 문제는 15649번 N과 M (1) 문제와 매우 유사한 문제이다. 문제의 핵심 포인트는 1~N까지의 자연수를 고르는데 중복이 불가능하고, 중복 수열 또한 있어서는 안된다.

1~N까지의 자연수 선택 중복을 피하기 위해서 visited 배열을 사용하였고, 중복 수열을 피하기 위해선 func 함수에 pos 변수 인자를 받아주었다.

func 함수의 기저조건은 depth가 M일 때 즉, 조합이 M개가 선택되었을 때 arr 배열에 저장되어 있는 값들을 출력하도록 설정하였다.

또한, pos값을 받은 pos+1부터 반복문을 돌게 하여 수열의 중복을 피하도록 코드를 짜보았다. 

 

 

 

 

코드(Code)

#include<iostream>
#define MAX 9;
using namespace std;
int N, M, visited[9], arr[9];

void func(int pos, int depth) {
	if(depth == M) {
		for(int i=0; i<M; i++)
			cout << arr[i] << ' ';
		cout << '\n';
		return;
	}

	for(int i=pos+1; i<=N; i++) {
		visited[i]=1;
		arr[depth]=i;
		func(i, depth+1);
		visited[i]=0;
	}
}

int main() {
	cin >> N >> M;
	func(0, 0);
}

 

반응형

'BaekJoon' 카테고리의 다른 글

[백준] 2580번 스도쿠 - C/C++  (0) 2023.06.21
[백준] 9663번 N-Queen - C/C++  (0) 2023.06.20
[백준] 15652번 N과 M (4) - C/C++  (0) 2023.06.20
[백준] 15651번 N과 M (3) - C/C++  (0) 2023.06.20
[백준] 15649번 N과 M (1) - C/C++  (0) 2023.06.19