티스토리 뷰

백준/실버

[백준 10974번] 모든 순열 (C++)

게임개발기원 2025. 3. 7. 19:21

문제링크 : https://www.acmicpc.net/problem/10974

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int n;
int arr[9];
bool visited[9];

void dfs(int idx)
{
    if(idx==n+1) //최대 깊이 도달
    {
        for(int i=1; i<=n; i++) cout << arr[i] << " ";
        cout << "\n";
        return;
    }

    for(int i=1; i<=n; i++)
    {
        if(visited[i]) continue;
        arr[idx] = i;
        visited[i] = 1; //현재 숫자 선택
        dfs(idx+1);
        visited[i] = false; //백트래킹 (선택 취소)
    }

}

int main(void)
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    cin >> n;
    dfs(1);

    return 0;
}

 

기본적인 백트래킹 문제이다.

배열에 백트래킹을 통한 순열 순서를 담아준다.

이후에 깊이가 n에 도달했을 때 해당 배열을 출력해주면 된다.

'백준 > 실버' 카테고리의 다른 글

[백준 2529번] 부등호 (C++)  (0) 2025.03.10
[백준 10971번] 외판원 순회 2 (C++)  (0) 2025.03.08
[백준 10819번] 차이를 최대로 (C++)  (0) 2025.03.05
[백준 1063번] 킹 (C++)  (0) 2025.03.04
[백준 1057번] 토너먼트 (C++)  (0) 2025.03.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함