[BOJ] 10974: 모든 순열

이슬비·2023년 2월 7일
0

Algorithm

목록 보기
72/110
post-thumbnail

브루트포스로 나눠진 문제를 dfs로 풀어버린 ...

1. 내 풀이 - 성공

import sys
input = sys.stdin.readline

n = int(input())
factorial = []

def dfs():
    if len(factorial) == n:
        print(" ".join(map(str, factorial)))
        return

    for i in range(1, n+1):
        if i not in factorial:
            factorial.append(i)
            dfs()
            factorial.pop()

dfs()

이걸 브루트포스로 우에 푸노 ... 하다가
알고리즘 분류 살짝 보고 백트래킹 있길래 생각해보니 백트래킹으로 풀 수 있어서 그냥 dfs로 풀어버림 ~~!~

2. 다른 풀이

from itertools import permutations #순열 함수

N = int(input())
N_list = [i for i in range(1, N+1)]

for numbers in list(permutations(N_list)):
    for num in numbers:
        print(num, end=' ')
    print()

풀이 출처: https://claude-u.tistory.com/368

이게 부르트포스 풀이겠지? itertools을 들어보기만 했지 이렇게 유용할 줄이야 ... 다음부터 순열 같은 문제 나오면 활용해봐야겠다.

3. 마치며

이렇게 쉬운 문제만 주세요 ...

profile
정말 알아?

0개의 댓글