- [알고리즘] 3. 완전 검색과 순열2025년 08월 18일
- Song hyun
- 작성자
- 2025.08.18.:48
728x90반응형1. 완전 검색 Exaustive Search
- 문제의 해법으로 생각할 수 있는 모든 경우의 수를 나열해보고 확인하는 기법.
- Brute-force / generate-and test라고도 함.
- 모든 경우의 수를 테스트하고, 최종 해법을 도출하는 방법.
- 일반적으로 경우의 수가 상대적으로 작을 때 유용하다.
*완전 검색의 필요성
(1) 완전 검색으로 시작
- 모든 경우의 수를 생성, 테스트 → 속도는 느리지만 해답을 찾아낼 수 있다.
- 우선 완전 검색으로 접근해 답을 찾고, 다른 알고리즘을 사용해 성능개선하기
2. 순열 Permutation
- 서로 다른 것들 중 몇 개를 뽑아서 한 줄로 나열하는 것
- 서로 다른 n개 중 r개를 택하는 순열은 nPr이라고 표현한다.
nPr = n * (n-1) * (n-2) * ... * (n-r+1)- nPn = n!이라고 표기하며, Factorial이라고 한다.
n! = n * (n-1) * (n-2) * ... * 2 * 1import itertools arr = [2,3,5,7,7,7,0,0,0,0] nPr = list(itertools.permutations(arr,10)) for x in nPr : print(x) print(len(nPr))- 단순하게 순열을 생성하는 법
- {1, 2, 3}을 포함하는 모든 순열을 생성하기
for i1 in range(1, 4): for i2 in range(1, 4): if i2 != i1 : for i3 in range(1, 4): if i3 != i1 and i3 != i2 : print(i1, i2, i3)728x90반응형'알고리즘' 카테고리의 다른 글
[알고리즘] 5. 2차원 배열 (2) 2025.08.23 [알고리즘] 4. 탐욕 알고리즘 (0) 2025.08.21 [알고리즘] 2. 카운팅 정렬 (0) 2025.08.15 [알고리즘] 1. 배열과 정렬 (3) 2025.08.12 [알고리즘] 알고리즘과 APS (3) 2025.08.09 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)