728x90
반응형

우선순위 큐 3

[Baekjoon 11000 / Python / 골드5] 강의실 배정

그리디, 우선순위 큐 문제이다. # 골드5 -> 그리디, 자료구조, 정렬, 우선순위 큐import heapqimport sysinput = sys.stdin.readlineN = int(input())data = [list(map(int, input().split())) for _ in range(N)]data.sort()# 첫번째 시작하는 수업의 종료시간을 저장# 종료시간은 우선순위가 됨pq = []heapq.heappush(pq, data[0][1])for i in range(1, N):    # 다음 수업과 진행중인 수업이 중복되지 않을 경우 진행중 수업 빼기    if data[i][0] >= pq[0]:        heapq.heappop(pq)    heapq.heappush(pq, data..

Algorithm/Greedy 2025.01.23

[크래프톤 정글 5기] week01 알고리즘 주차 여섯번째 날, 해시 테이블, 힙, 우선순위 큐, 이진 트리, 피보나치

해시 테이블(Hash Table)- 먼저 키(key)와 값(value)으로 구성된 데이터가 필요하다.- 여기서 “key”를 해시값으로 만들어, 해당 해시값을 “인덱스”로써 활용하여 테이블에 저장한다. 여기서 해시값은 정수 형태가 된다.- 데이터(value)를 해시하여 인덱스로 쓰는 거 아니냐는 사람들이 있는데, 이럴 경우 value가 같으면 인덱스가 중복될 수 있다. 해시함수는 같은 입력에 대해서 항상 같은 해시값을 만들기 때문이다.- 어떤 값을 찾든 O(1)의 복잡도를 가진다. 고유값으로 접근하면 되기 때문.- 해시 테이블에서 만들어진 원소를 버킷(Bucket)이라고 한다. 해시 테이블의 장/단점- 장점 : 자료의 검색, 읽기, 저장 속도가 빠르다. 즉 데이터 조회가 빠르다.- 장점 : 자료가 중복되는..

[Baekjoon 11279 / python / 실버2] 최대 힙

import heapq as hq import sys n = int(input()) hqq = [] for _ in range(n): x = int(sys.stdin.readline()) if x >= 1: hq.heappush(hqq, -x) # hq는 최소힙만 지원하기 때문에, 최대힙 처럼 사용하기 위해 음수로 저장 else: # 음수로 저장하면 -가 붙으니, 가장 큰 값이 가장 위로 가게 된다 if len(hqq) == 0: print(0) else: print(abs(hq.heappop(hqq))) # 값을 꺼낼 땐 절댓값을 이용해 양수로 만든다 우선순위 큐가 사용된 문제다. 최대 힙으로 우선순위 큐를 구현하여 문제를 해결할 수 있다. 스택, 큐 문제처럼 문제 자체는 어렵지 않으나, 힙이라는 자료..

728x90
반응형