목록코딩테스트 준비/알고리즘 정리 (2)
Just Do IT!
완전 탐색이란? 브루트-포스 알고리즘이라고 불리는데, 그냥 모든 경우를 탐색해보는 알고리즘이다. 정말 하나부터 열까지 모든 경우를 탐색하기 때문에 정확성 100%지만, 속도는 느리다는 단점이 있다. 그래서 데이터가 매우 적을 때만 사용 가능하다. 완전 탐색을 활용하는 방법 반복/조건문 활용 순열(Permutation) : n개의 원소 중 r개의 원소를 중복 허용 없이 나열 재귀 호출 BFS, DFS 활용 비트마스크 : 2진수 표현 기법 활용 완전 탐색 활용 - 단순 반복/조건문 활용 단순하게 모든 방법을 찾는 방법 (예) 자물쇠 암호를 찾는 경우 (모든 경우의 수 계산) 완전 탐색 활용 - 순열 순열은 임의의 수열이 있을 때, 그것을 다른 순서로 연산하는 방법이다. (순서가 중요) 같은 데이터지만, 그 ..

힙 자료구 특정한 규칙을 가지는 트리로, 최댓값과 최솟값을 찾는 연산을 빠르게 하기 위해 고안된 완전이진트리를 기본으로 한다. min heap을 사용하면 원소들이 항상 정렬된 상태로 추가되고 삭제되며,min heap에서 가장 작은 값은 언제나 인덱스 0, 즉, 이진트리의 루트에 위치한다. 최소 힙 : 부모 노드의 키값이 자식 노드의 키값보다 항상 작은 힙 최대 힙 : 부모 노드의 키값이 자식 노드의 키값보다 항상 큰 힙 list와 tree의 장점을 모두 사용한다. 트리 구조 사용 요소 삽입 및 최소 값의 제거 시 발생하는 요소의 검색 및 스왑의 횟수보다 일반적인 리스트를 사용할 때보다 적다. 리스트 사용 완전 이진트리는 리스트로 코딩 가능 리스트가 클래스보다 빠르다 파이썬 heapq 모듈 heapq (p..