๐Ÿ• Baaaaaarking/0x0C๊ฐ• - ๋ฐฑํŠธ๋ž˜ํ‚น

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

์„ ๋‹ฌ 2022. 7. 12. 00:27
๋ฐ˜์‘ํ˜•

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

 

15654๋ฒˆ: N๊ณผ M (5)

N๊ฐœ์˜ ์ž์—ฐ์ˆ˜์™€ ์ž์—ฐ์ˆ˜ M์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์•„๋ž˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ธธ์ด๊ฐ€ M์ธ ์ˆ˜์—ด์„ ๋ชจ๋‘ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. N๊ฐœ์˜ ์ž์—ฐ์ˆ˜๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ ์ˆ˜์ด๋‹ค. N๊ฐœ์˜ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ M๊ฐœ๋ฅผ ๊ณ ๋ฅธ ์ˆ˜์—ด

www.acmicpc.net

 

๋ฌธ์ œ

N๊ฐœ์˜ ์ž์—ฐ์ˆ˜์™€ ์ž์—ฐ์ˆ˜ M์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์•„๋ž˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ธธ์ด๊ฐ€ M์ธ ์ˆ˜์—ด์„ ๋ชจ๋‘ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. N๊ฐœ์˜ ์ž์—ฐ์ˆ˜๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ ์ˆ˜์ด๋‹ค.

  • N๊ฐœ์˜ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ M๊ฐœ๋ฅผ ๊ณ ๋ฅธ ์ˆ˜์—ด

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N๊ณผ M์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ M ≤ N ≤ 8)

๋‘˜์งธ ์ค„์— N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ์ˆ˜๋Š” 10,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ค‘๋ณต๋˜๋Š” ์ˆ˜์—ด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ถœ๋ ฅํ•˜๋ฉด ์•ˆ๋˜๋ฉฐ, ๊ฐ ์ˆ˜์—ด์€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

์ˆ˜์—ด์€ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

 

ํ’€์ด

[๐Ÿ• Baaaaaarking/0x0C๊ฐ• - ๋ฐฑํŠธ๋ž˜ํ‚น] - [BOJ S3][C++] ๋ฐฑ์ค€ 15694๋ฒˆ: N๊ณผ M (1)

 

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

https://www.acmicpc.net/problem/15649 15649๋ฒˆ: N๊ณผ M (1) ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ค‘๋ณต๋˜๋Š” ์ˆ˜์—ด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ถœ๋ ฅํ•˜๋ฉด ์•ˆ๋˜๋ฉฐ, ๊ฐ ์ˆ˜์—ด์€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

whkakrkr.tistory.com

 

์œ„ ๋ฌธ์ œ์˜ ํ‹€์€ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ,

(1) ๋Œ€์‹  ์ž…๋ ฅ ๋ฐฐ์—ด์„ ๋”ฐ๋กœ ๋ฐ›์•„์˜ค๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

(2) ์ดํ›„ ์ž˜ ์ •๋ ฌํ•ด์ฃผ๊ณ 

(3) ์ธ๋ฑ์Šค ์ด์šฉํ•ด์„œ ๋˜‘๊ฐ™์ด ์ ‘๊ทผํ•ด์ฃผ๋ฉด ๋

 

// Authored by : seondal
// Co-authored by : -

// #include <bits/stdc++.h>
#include <iostream>
#include <algorithm>

using namespace std;

int n,m;
int input[10];
bool used[10];
int arr[10];

void recur(int k){
    if(k == m) {
        for(int i=0; i<m; i++) {
            cout << arr[i] << " ";
        }
        cout << "\n";
        return;
    }
    
    for(int i=0; i<n; i++){
        if(!used[i]){
            used[i] = true;
            arr[k] = input[i];  //(3)
            recur(k+1);
            used[i] = false;
        }
    }
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    
    for(int i=0; i<10; i++) input[i] = 10000;
    
    // (1)
    cin >> n >> m;
    for(int i=0; i<n; i++)
        cin >> input[i];
        
    // (2)
    sort(begin(input), end(input));
    
    recur(0);
    
    return 0;
}

/*
 */
๋ฐ˜์‘ํ˜•