
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42626
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
가장 안 매운 스코빌 지수와 두번째로 안 매운 스코빌 지수를 섞는다고 하니 우선순위가 있는 큐 자료구조인 힙으로 구현할 수 있다.
최소 힙 구조를 떠올리면 heappop을 2번하여 나온 결과를 다시 최소힙에 heappush 하는 과정을 반복하면서 루트 노드에 있는 요소가 주어진 K보다 크면 섞은 횟수를 반환한다.
import heapq
def solution(scoville,K):
answer = 0
s = scoville[:] # 스코빌 배열 복사
heapq.heapify(s)
while s and s[0] < K:
try:
new_food = heapq.heappop(s) + heapq.heappop(s) * 2
heapq.heappush(s, new_food)
answer += 1
except:
return -1
return answer
- try...except 구문없이 실행해보니, heappop을 2번하는 과정에서 런타임 에러가 발생하였다. 런타임 오류가 발생할 때 까지 반복을 했다는 것은 주어진 K를 만족할 때까지 섞어도 찾을 수 없는 경우이기 때문에 except 구문으로 -1을 반환하도록 구현했다.
'Python' 카테고리의 다른 글
프로그래머스 연습문제 - 정수 제곱근 판별 (0) | 2024.03.27 |
---|---|
[좌충우돌, 파이썬으로 자료구조 구현하기] 이진 탐색 트리 구현하기 (0) | 2023.09.21 |
[좌충우돌, 파이썬으로 자료구조 구현하기] Heapify 구현하기 (1) | 2023.09.18 |
[좌충우돌, 파이썬으로 자료구조 구현하기] 힙(heap) 구현하기 (0) | 2023.09.16 |
[좌충우돌, 파이썬으로 자료구조 구현하기] 형제 노드가 없는 노드 찾기 (0) | 2023.09.14 |