[BOJ][C++] 백준 15650번: N과 M (2)

2024. 10. 28. 17:45·💭 Problem Solving/C++

문제

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

 

문제 이해

  • 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열을 출력한다.
  • 고른 수열은 오름차순이어야 한다.

 

문제 풀이

💡 DFS를 이용한 백트래킹

이전에 올린 N과 M (1) 문제에서, 출력할 수열이 오름차순인 것만 추가되었다.

 

[BOJ][C++] 백준 15649번: N과 M (1)

문제https://www.acmicpc.net/problem/15649 문제 이해1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열을 모두 구한다. 문제 풀이💡DFS를 이용한 백트래킹    1부터 N까지 재귀함수를 이용해 탐색하

y-e-99.tistory.com

N과 M (1)과 풀이 방식이 비슷한데, for 반복문에서 i값을 이용하면 중복없이 오름차순으로 수를 고를 수 있다.

그래서 방문 표기 배열이 필요하지 않다.

 

  1. 종료 조건
    : M개의 수를 모두 선택했을 때
  2. 탐색
    - 지정된 수부터 N까지 탐색을 반복한다. 지정된 수는 1부터 N까지 증가하여, 수열이 오름차순이 되도록 한다.
    - 탐색한 수를 출력할 배열에 삽입한다.
    - 탐색이 끝난 수를 배열에서 제거한다.
  3. 탐색 종료
    - 선택한 M개의 수가 담긴 배열을 출력 후 탐색을 종료한다.

 

코드

#include<iostream>
#include<vector>

using namespace std;

int N, M;
vector<int> v;

void dfs(int num, int cnt) {
    if (cnt == M) {
        for (int i: v)
            cout << i << ' ';
        cout << '\n';
        return;
    }

    for (int i = num; i <= N; i++) {
        v.push_back(i);
        dfs(i + 1, cnt + 1);
        v.pop_back();
    }
}

int main() {
    cin >> N >> M;

    dfs(1, 0);

    return 0;
}

 

'💭 Problem Solving > C++' 카테고리의 다른 글

[BOJ][C++] 백준 3085번: 사탕 게임  (0) 2024.10.30
[BOJ][C++] 백준 1789번: 수들의 합  (0) 2024.10.29
[BOJ][C++] 백준 15649번: N과 M (1)  (0) 2024.10.28
[SWEA][C++] 1289. 원재의 메모리 복구하기  (0) 2024.10.16
[BOJ][C++] 백준 2002번: 추월  (0) 2024.06.14
'💭 Problem Solving/C++' 카테고리의 다른 글
  • [BOJ][C++] 백준 3085번: 사탕 게임
  • [BOJ][C++] 백준 1789번: 수들의 합
  • [BOJ][C++] 백준 15649번: N과 M (1)
  • [SWEA][C++] 1289. 원재의 메모리 복구하기
0=2.
0=2.
  • 0=2.
    0=2
    0=2.
  • 전체
    오늘
    어제
    • 분류 전체보기 (104)
      • 📂 Project (2)
        • Paint the City (2)
      • 💭 Problem Solving (42)
        • C++ (28)
        • Java (14)
      • 📝 Study (17)
        • React (1)
        • Java (16)
      • 💻 CS (11)
        • 면접을 위한 CS 전공지식 노트 (2)
        • 정보처리기사 (9)
      • 🏃‍♀️ Activities (32)
        • Web Front-End Basic Study (6)
        • 42 Cursus (26)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    구현
    unity
    C
    dynamic programming
    HTML
    La Piscine
    swea
    백트래킹
    시뮬레이션
    그리디 알고리즘
    맵
    브루트포스
    react
    프로그래머스
    knapsack
    정보처리기사
    java
    git
    BFS
    백준
    42경산
    정렬
    VR
    트리
    CSS
    .h
    makefile
    github
    dfs
    CS
  • hELLO· Designed By정상우.v4.10.3
0=2.
[BOJ][C++] 백준 15650번: N과 M (2)
상단으로

티스토리툴바