반응형
문제유형
순열 알고리즘
풀이 방법 도출 과정
1. 순열 알고리즘을 구현하는 것이 목표
시간 복잡도
최악의 순간을 생각하면 8!이기 때문에 이정도면 1억 번은 넘기지 않는 수이다.
코드 및 간단설명
순열 알고리즘을 구현해보았다.
N = int(input())
lst = []
for i in range(1, N + 1):
lst.append(i)
choose = []
check = [False] * N
def permutation(level):
if level == N:
print(*choose)
return
for i in range(0, N):
if check[i] == True:
continue
choose.append(lst[i])
check[i] = True
permutation(level + 1)
check[i] = False
choose.pop()
permutation(0)
다른 풀이
1) 파이썬 라이브러리 사용
Python 내장 라이브러리인 itertools.permutations를 이용하여 풀어보는 방법이다. 이 방법은 C로 구현된 내장 함수이기 때문에 순열 생성에 있어서 매우 효율적이다.
from itertools import permutations
N = int(input())
numbers = list(range(1, N + 1))
for perm in permutations(numbers):
print(*perm)
반응형
'Coding Test (코딩 테스트)' 카테고리의 다른 글
[class2]백준 11650번(좌표 정렬하기) - 코테공부 24일차(2025.02.15) (0) | 2025.02.15 |
---|---|
[class3]백준 1759번(암호 만들기) - 코테공부 24일차(2025.02.15) (0) | 2025.02.15 |
[class2]백준 6603번(로또) - 코테공부 24일차(2025.02.15) (0) | 2025.02.15 |
[class2]백준 4779번(칸토어 집합) - 코딩테스트 23일차(2025.02.13) (0) | 2025.02.13 |
[class1]백준 10870번(피보나치 수 5) - 코딩테스트 23일차(2025.02.13) (0) | 2025.02.13 |