반응형
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

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

BaekJoon

[백준] 15652번 N과 M (4) - C/C++

섭_민 2023. 6. 20. 11:35
반응형

백준 15652 문제(Problem)

15652
백준 15652 문제

 

풀이(Solution)

이 문제는 조합과 재귀함수를 이용하여 풀 수 있는 문제이다. 문제의 포인트는 같은 수를 여러번 골라도 되고, 수열은 사전 순으로 증가하는 순서로 출력해야한다는 점이다. 이는 재귀적으로 함수를 호출 할 때 인자값으로 pos를 보냄으로써 해결할 수 있다.

 

재귀적으로 호출할 함수는 func 함수이다. depth가 M이 되었을 때 즉, 조합이 M개 이루어졌을 때 해당 조합의 원소를 출력한다. 

 

func 함수의 인자값을 통해 받은 pos부터 반복문을 시작하여, 출력할 a배열을 업데이트 해주어 서로 다른 조합을 생성하였다.

 

이 문제는 재귀 함수를 통해 조합을 만들 줄 알기만 하면 어렵지 않은 문제이다.

 

코드(Code)

#include<iostream>
using namespace std;
int N, M, a[9];

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

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

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

 

 

반응형

'BaekJoon' 카테고리의 다른 글

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