티스토리 뷰
1. 문제
programmers.co.kr/learn/courses/30/lessons/42626
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같
programmers.co.kr
2. 소스코드 (Python3)
import heapq
def solution(scoville, K): answer = 0 scoville = [s for s in scoville] heapq.heapify(scoville)
while True: tmp1 = heapq.heappop(scoville) if tmp1 >= K: break if not scoville: return -1 tmp2 = heapq.heappop(scoville) heapq.heappush(scoville, tmp1 + 2*tmp2) answer += 1
return answer |
3. 고찰
1) 시간 복잡도
<힙 연산 시간복잡도>
- 구성 heapify : O(N log N)
- 삽입 insert : O(log N)
- 삭제 remove : O(log N)
<소스코드 시간복잡도>
heapify -> O(N log N)
while loop -> 최대 N-1번 반복
힙 insert 두 번 -> O(2*log N)
힙 remove 한 번 -> O(log N)
따라서 위 소스코드의 시간 복잡도는 O(N log N)이다.
'프로그래밍 > Python' 카테고리의 다른 글
프로그래머스 - 대중소 괄호 짝 맞추기 (0) | 2020.12.04 |
---|---|
프로그래머스 - 좌석 구매 (0) | 2020.12.04 |
프로그래머스 - 큰 수 만들기 (0) | 2020.12.03 |
프로그래머스 - 가장 큰 수 (0) | 2020.12.03 |
프로그래머스 - 체육복 (0) | 2020.12.03 |
- Total
- Today
- Yesterday
- 아두이노 IDE
- roslaunch
- 프로그래머스
- python3
- 8자주행
- 백준알고리즘
- 원격 통신
- VMware
- 코드리뷰
- C++
- Publisher
- ROS
- HC-SR04
- filesystem
- set backspace
- sensehat
- 포트인식문제
- VirtualBox
- Ubuntu20.04
- 윈도우 복구
- vue/cli
- 리눅스
- umount
- Python
- Ubuntu16.04
- 초음파센서
- 윈도우
- 우분투
- Mount
- subscriber
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |