Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백준 5567
- 고대 문명 유적 탐사
- boj 5567
- gemmasprint
- pcce 기출문제 10번 공원
- pccp 기출문제 풀이
- pcce 기출문제 10번 공원 풀이
- 잔디 기부
- 잔디 기부 캠페인
- depth-stencil
- pcce 기출문제 풀이
- DirectX12
- c++ 1991
- pcce 기출문제 9번 지폐 접기
- directx 그래픽스
- c++ 5567
- constant buffre
- 오블완
- boj 1991
- PCCE
- 프로그래밍공부
- 수식 복원하기
- 티스토리챌린지
- 렌더링 파이프
- python 고대 문명 유적 탐사
- pcce 기출문제 10번 지폐 접기 풀이
- DirectX
- root signature
- 코드트리 고대 문명 유적 탐사
- texture mapping
Archives
- Today
- Total
오구의코딩모험
[Python] 더 맵게 본문
반응형
[코딩테스트 고득점 KIT - 힙]
힙큐(Heap Queue)와 우선순위 큐(Priority Queue)가 유사하다고 생각하여,
우선순위 큐를 사용하여 문제를 푸니 효율성 테스트에서 걸려 통과되지 않았다.
힙큐로 구현한 사람들이 많다하여,
왜 우선순위 큐로 하면 안되는건지 서칭을 하다...
https://slowsure.tistory.com/130
아주 꼼꼼하게 써주신 글 덕분에
힙큐가 우선순위 큐보다 매우 빠르다는 것! - (PriorityQueue 는 Thread-Safe 하고 heapq는 Non-safe, 확인절차에서 시간)
문제는 힙큐에서 작은 순으로 빠져나오는 값을
리스트에 담아주며 K 값을 못넘는 경우 정해진 수식을 통하여 계산하고 다시 힙큐에 담는다.
이 과정을 반복하여
모든 값이 K 이상이 될 수 있는지 확인 후,
answer 값을 반환.
끝
import heapq as hq
def solution(scoville, K):
answer = 0
# heapq의 장점, heapify를 통한 리스트-> heapq 변환
# 우선순위 큐는 for문을 통해 초기값을 대입해줘야한다.
hq.heapify(scoville)
h = []
count = 0
while scoville:
# 가장 작은 값이 K 이상이라면, 모든 값이 K 이상일 것
# h 리스트에 값이 존재한다면, 0 번째 값이 최소가 아닐 수 있다.
if scoville[0] >= K and not h:
return count
h.append(hq.heappop(scoville))
# K 이하 값 두개를 연산하여 새로운 스코빌 지수 생성
if len(h) == 2:
count += 1
total = h[0] + h[1] * 2
h = []
hq.heappush(scoville, total)
return -1
반응형
'프로그래밍 공부 > 프로그래머스' 카테고리의 다른 글
[Python] K번째수 (0) | 2023.01.01 |
---|---|
[Python] 디스크 컨트롤러 (0) | 2022.12.31 |
[Python] 주식가격 (0) | 2022.12.30 |
[Python] 주차 요금 계산 (0) | 2022.12.29 |
머쓱이 스탬프 획득! (0) | 2022.12.27 |
Comments