본문 바로가기

ALGORITHMS/THEORY3

[PYTHON] PriorityQueue, heapq 목차 우선순위 큐? GREEDY알고리즘 문제는 정렬 아니면 우선순위 큐 문제일 정도로 자주 쓰이는 자료구조. 일반적인 QUEUE처럼, 데이터가 들어온 순서대로 나가는 것이 아니라, 우선순위가 높은 데이터가 먼저 출력되는 자료구조. 우선순위 큐는 힙으로 구현 가능한데, 최소값 우선큐 = 최소힙 & 최대값 우선큐 = 최대힙 O(logn) 의 시간복잡도 PriorityQueue 와 heapq 모두 최소힙( 작은값부터 출력) 만 지원. queue.PriorityQueue( ) Tip queue 모듈의 다음과 같은 클래스들 에서, 동일 메소드 사용 가능. queue.Queue ( maxSize ) 기본 큐. FIFO 구조 queue.SimpleQueue 입력 제한 없는 FIFO 큐 queue.LifoQueue (.. 2023. 5. 25.
[JAVA] PriorityQueue : 우선순위 큐 목차 우선순위 큐? GREEDY알고리즘 문제는 정렬 아니면 우선순위 큐 문제일 정도로 자주 쓰이는 자료구조. 일반적인 QUEUE처럼, 데이터가 들어온 순서대로 나가는 것이 아니라, 우선순위가 높은 데이터가 먼저 출력되는 자료구조. 우선순위 큐는 힙으로 구현 가능한데, 최소값 우선큐 = 최소힙 & 최대값 우선큐 = 최대힙 O(logn) 의 시간복잡도 알고리즘 삽입 알고리즘 큐에 값이 삽입되면 다음과 같이 진행된다 출처 : [Java] PriorityQueue(우선순위 큐) 클래스 사용법 & 예제 총정리[코딩팩토리] 삭제 알고리즘 출처 : [Java] PriorityQueue(우선순위 큐) 클래스 사용법 & 예제 총정리[코딩팩토리] 활용 선언 import java.util.PriorityQueue; impo.. 2023. 5. 25.
약수 효율적으로 찾기 목차 모든 경우를 탐색 : O(N) def getDiv(num): lst = [] for i in range(1,num+1): if num % i ==0 : lst.append(i) return lst print(getDiv(100)) # [1, 2, 4, 5, 10, 20, 25, 50, 100] 위의 코드의 경우 1부터 100까지 하나하나 비교하여 약수를 찾는다. 만약 1억의 약수를 구하고자 한다면, 1억 번을 반복해야 한다. 시간 복잡도가 O(N) 이기 때문에 수가 커질 수록 런타임 초과 오류 발생 확률이 높아진다. 효율적 탐색 : O(√N) 1부터 √N까지 수 중 나누어 떨어지는 수를 찾고, N을 해당 값으로 나눈다 만약 100의 약수를 구한다면, √100 = 10이므로, 100은 1.. 2022. 11. 23.