카테고리 없음

99클럽 코테 스터디 15일차 TIL - 백준 15663번 (N과 M (9))

ssoheeh 2024. 4. 15. 21:18

#include <bits/stdc++.h>

using namespace std;

bool visited[9];
int re[9];
vector<int> v;
vector<int> temp;
set<vector<int> > s;

void solve(int n, int m, int k)
{

    if (m == k)
    {
        for (int i = 0; i < m; i++)
        {
           temp.push_back(v.at(re[i]));

            // cout << v.at(re.at(i)) << " ";
        }
        s.insert(temp);
        temp.clear();

        return;
    }
    for (int i = 0; i < n; i++)
    {
        if (!visited[i])
        {
            visited[i] = true;
            re[k] = i;
            // re[k] = i;
            //  visited[k] = true;
            solve(n, m, k + 1);
            visited[i] = false;
        }
        // visited[i] = false;
    }
}

int main(void)
{
    cin.tie(0);
    ios::sync_with_stdio(0);
    int N, M;
    cin >> N >> M;
    int arr[9];
    fill_n(visited, M, false);
    fill_n(arr, 9, -1);

    for (int i = 0; i < N; i++)
    {
        int a;
        cin >> a;
        v.push_back(a);
    }

    //sort(v.begin(), v.begin() + v.size());
    solve(N, M, 0);

    for(vector<int> v: s){
        for(int num : v){
            cout<< num<<" ";
        }
        cout<<"\n";
    }
    return 0;
}

set : 중복 불가능, 정렬된 컨테이너

fill_n(arr, size, 채울 값) - 배열 채우기

 

 

오늘의 회고

  • 시험기간이어도 알고리즘, 스프링 공부 조금씩이라도 하기!
  • 내일(4/16) 학습 예정 : 스프링부트 로그인 관련 공부