반응형
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
- 배열
- 프로그래머스
- javascript
- dp
- python
- react
- CS
- VUE
- typescript
- 프로그래밍
- C++
- web
- 리트코드
- Level2
- Level1
- 파이썬
- 백준
- OS
- 웹프로그래밍
- 코테연습
- 자바스크립트
- Level3
- 리액트
- sql
- Doitvue.js입문
- LeetCode
- Medium
- 고득점Kit
- 카카오
- 동적계획법
Archives
- Today
- Total
[프로그래머스] 더 맵게 - python 본문
반응형
더 맵게
문제 설명
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다.
섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)
Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요.
제한 사항
- scoville의 길이는 2 이상 1,000,000 이하입니다.
- K는 0 이상 1,000,000,000 이하입니다.
- scoville의 원소는 각각 0 이상 1,000,000 이하입니다.
- 모든 음식의 스코빌 지수를 K 이상으로 만들 수 없는 경우에는 -1을 return 합니다.
풀이
매순간 최솟값을 꺼내야하므로 힙을 이용한다. 최소값이 K이상일 때까지 값 두 개를 꺼내서 섞는다
만약 그 전에 원소가 한 개 이하라면 K 이상을 만들 수 없으므로 -1을 리턴한다.
from heapq import heappop, heappush, heapify
def solution(scoville, K):
answer = 0
heapify(scoville)
while scoville[0] < K:
try:
heappush(scoville, heappop(scoville) + (heappop(scoville) * 2))
answer += 1
except:
return -1
return answer
반응형
'코테 문제 풀이' 카테고리의 다른 글
[프로그래머스] 행렬 테두리 회전하기 - python (0) | 2022.04.04 |
---|---|
[프로그래머스] 짝지어 제거하기 - python (0) | 2022.04.04 |
[프로그래머스] 기능개발 - python (0) | 2022.04.01 |
[프로그래머스] 124 나라의 숫자 - python (0) | 2022.04.01 |
[프로그래머스] 멀쩡한 사각형 - python (0) | 2022.04.01 |
Comments