๐Ÿ’ญ Problem Solving/C++

[BOJ][C++] ๋ฐฑ์ค€ 15650๋ฒˆ: N๊ณผ M (2)

0=2. 2024. 10. 28. 17:45

๋ฌธ์ œ

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;
}