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
- 머신러닝
- 3단계
- ssd
- AWS
- 파이썬
- 자료구조 및 실습
- C++
- Python
- 1단계
- 그리디
- 프로그래머스
- docker
- 딥러닝
- 2단계
- ubuntu
- 코드수행
- test-helper
- CS231n
- 전산기초
- Object detection
- MySQL
- 구현
- STL
- 실전알고리즘
- SWEA
- 모두를 위한 딥러닝 강좌 시즌1
- pytorch
- 백준
- cs
- 이것이 코딩테스트다 with 파이썬
Archives
- Today
- Total
곰퓨타의 SW 이야기
[python] heapq 모듈 부시기❗️ 본문
프로그래머스 level2의 문제 중 더 맵게 라는 문제를 해결하던 도중에 효율성 테스트를 계속 통과하지 못하여 힙에 대해 생각하던 중,
heapq모듈을 접하면서 쉽게 풀 수 있게 되어 이 모듈에 대해 정리해보고자 한다.
programmers.co.kr/learn/courses/30/lessons/42626
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같
programmers.co.kr
우선 heapq 모듈은 이진트리로 구성된 min heap 구조를 제공해준다.
이를 사용하기 위해서는 아래와 같은 코드를 추가해주어야 한다.
import heapq
모듈을 불러온 후, heap 구조를 사용할 수 있게 된다.
# 힙을 위한 리스트 생성
heap = []
# 원소 추가 방법
heapq.heappush(heap,2)
heapq.heappush(heap,1)
heapq.heappush(heap,4)
heapq.heappush(heap,3)
# 원소 삭제 방법
heapq.heappop(heap) #1
# heap = [2,3,4]
# 원소 얻는 방법
print(heap[0]) # 2
# 이미 존재하는 리스트를 힙으로 변환하는 방법
heap = [1,2,3,4,5]
heapq.heapify(heap)
기존에 작성하였던 코드는 효율성테스트를 통과하지 못하였다.
이는 while문이 돌아갈 때마다 sort를 하게되어 효율성이 떨어진다고 판단되었다.
def solution(scoville, K):
answer = 0
while scoville[0]<=K :
if len(scoville)==1 :
return -1
answer+=1
scoville.append(scoville.pop(0)+scoville.pop(0)*2)
scoville.sort()
return answer
heapq를 알게된 후, 다음과 같이 코드를 수정하였는데, 모든 효율성 테스트에서 통과할 수 있게 되었다..!
import heapq
def solution(scoville, K):
answer = 0
heapq.heapify(scoville)
while scoville[0]<=K :
if len(scoville)==1 :
return -1
answer+=1
heapq.heappush(scoville,heapq.heappop(scoville) + heapq.heappop(scoville)*2)
return answer
시간 복잡도 문제로 어려움을 겪는 경우, heap 사용도 고려해보아야겠다❗️😊
'TIL > 코테개념_python' 카테고리의 다른 글
[python] zip을 이러한 방법으로 활용한다구 ?? (0) | 2020.12.30 |
---|---|
[python] 순열과 조합을 모듈로?? (0) | 2020.12.28 |
[python] deque란❓ (0) | 2020.12.27 |
[python] 문자열 채우기 (0) | 2020.12.26 |
[python] tuple과 list 차이점이 헷깔려요❗️ (0) | 2020.12.24 |
Comments