백준 algorithm

백준 15651 - N과 M(3)

cosmohoo 2020. 6. 3. 21:43
반응형

문제 설명

 

 

=> 브루트 포스 문제입니다. 

=> 기존의 N과 M 문제와의 차이점이라고 하면, visited [] 배열이 필요가 없다는 것입니다. 

=> 해당 문제는 중복을 허용하기 때문에 visited가 없이 바로 코드를 짜면 가능합니다.

 

https://codingham.tistory.com/142

 

백준 15650 - N과 M(2)

=> 브루트 포스 문제입니다. => 기존의 N과 M문제에서 힌트를 받아 풀 수 있습니다. => 오름차순으로 해야되는 것만 염두에 두면 풀 수 있습니다. https://codingham.tistory.com/41 백준 15649 - N과 M(1) 백트..

codingham.tistory.com

https://codingham.tistory.com/41

 

백준 15649 - N과 M(1)

백트래킹과 관련된 기초 문제이다. 본인은 백트레킹의 개념은 알지만 코드로 구현함에 있어 어려움을 겪어, 다른 사람들의 코드를 보며 썼다. 길이가 M이므로, cnt가 M이 될때까지 해당 Backtracking

codingham.tistory.com

 

 

=>위의 두 문제를 활용하되, visited 배열을 없애 중복을 허용하면 간단히 짤 수 있는 코드입니다. 

 

 

 

#include <iostream>
#include <algorithm>
#include <string>

int arr[10];

using namespace std;

void find(int index,  int N, int M)
{
    if(index == M)
    {
        for(int i=0; i<M; i++)
        {
            cout << arr[i] <<" ";
        }
        cout<<'\n';
        return;
    }
    
    for(int i=1; i<=N; i++)
    {
        arr[index] = i;
        find(index+1, N, M);
    }
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    
    int N, M;
    cin >> N >> M;
    
    find(0,N, M);

    return 0;
}

 

 

 

 

 

실행 화면 1

 

 

실행 화면 2

반응형