https://school.programmers.co.kr/learn/courses/30/lessons/42626
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
처음에 어차피 힙은 배열로 구현하니까 배열로 하면 풀 수 있을꺼야 라는 어리석은 생각을했다. ㅠ 찾아보니 heapq라이브러리를 통해 구현을 해야 효율성 테스트를 통과할 수 있었다.
풀이
import heapq
def solution(scoville, K):
answer = 0
# 힙으로 변환
heapq.heapify(scoville)
while scoville[0] < K:
scoville1 = heapq.heappop(scoville)
scoville2 = heapq.heappop(scoville)
heapq.heappush(scoville, scoville1 + scoville2 * 2)
answer += 1
if len(scoville) < 2 and scoville[0] < K:
return -1
return answer
해설
heapq 라이브러리를 사용하면 그 이후에는 문제에서 하라는대로 구현만 하면된다. heapq 사용시 주의해야할 점은 heapq로 변환한 배열의 맨앞요소는 제일 작은 수 이지만 두번째 요소는 두번째로 작은 수가 아니라는 점이다. 따라서 직접 하지말고 첫번째, 두번째 최솟값을 뺄때 heappop()을 이용해서 빼준다.
문제에서 제시한 모든 음식의 스코빌 지수를 K이상으로 만들 수 없는 경우는 남아있는 요소가 2개 미만이고 scoville[]의 최소인 요소가 K를 안넘었을때 return -1을 해야한다
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 타겟 넘버 - Lv2 (0) | 2025.07.03 |
|---|---|
| [프로그래머스] 서버 증설 - Lv2 (0) | 2025.06.30 |
| [프로그래머스] [3차] 압축(2018 KAKAO BLIND RECRUITMENT) - Lv2 (0) | 2023.01.05 |
| [프로그래머스] 귤 고르기(연습문제) - Lv2 (0) | 2023.01.04 |
| [프로그래머스] k진수에서 소수 개수 구하기(2022 KAKAO BLIND RECRUITMENT) - Lv2 (0) | 2023.01.03 |
댓글