[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개의 댓글

관련 채용 정보