Problem Solving/BOJ

[백준 15665번] [Backtracking] N과 M (11)

  • -
728x90
반응형

Approach

중복된 숫자의 입력을 제거해주면, https://viyoung.tistory.com/284?category=884242 문제와 완벽히 동일하다.

 

[백준 15656번] [Backtracking] N과 M (7)

Approach 기본적인 접근 방법은 https://viyoung.tistory.com/283.과 동일하다. [백준 15655번] [Backtracking] N과 M (6) Approach 문제에서 요구한 조건이 내림차순이라는 조건이 있으므로, 정렬한 상태에서 몇..

viyoung.tistory.com

 

중복된 것만 unique함수를 통해 지워주면 된다.

Code

#include <bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0)

using namespace std;
int result[8];
vector<int> s;
int n, m;

void solve(int index, int cur)
{
    result[cur++] = s[index];
    if (cur == m)
    {
        for(int i = 0; i < m; i++){
            if(i != m - 1) cout << result[i] << " ";
            else cout << result[i] << "\n";
        }
        return;
    }
    else
    {
        for (int i = 0; i < s.size(); i++) solve(i, cur);
    }
    return;
}

int main(void)
{
    fastio;
    cin >> n >> m;

    for (int i = 0; i < n; i++)
    {
        int t;
        cin >> t;
        s.push_back(t);
    }

    sort(s.begin(), s.end());
    s.erase(unique(s.begin(), s.end()), s.end()); // 중복 제거

    for (int i = 0; i < s.size(); i++)
    {
        solve(i, 0);
    }
    return 0;
}
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.