항해 TIL
더 맵게
오답 코드 (1st try)
import heapq
# heappush
# heapify
# heappop
def solution(scoville, K):
# help(heapq)
cnt = 0
heapq.heapify(scoville)
# print(scoville)
while scoville:
cnt += 1
# print(cnt)
lowest_hot = heapq.heappop(scoville)
second_hot = scoville[0]
scoville_rate = lowest_hot + (2 * second_hot)
heapq.heappop(scoville)
heapq.heappush(scoville, scoville_rate)
if scoville[0] >= K:
# print(scoville[0])
break
return cnt
Python
복사
•
문제점:
◦
첫 번째 요소만 K 이상인지 확인하고 있음
◦
모든 음식의 스코빌 지수가 K 이상인지 확인하지 않음
◦
섞는 횟수(cnt) 증가 타이밍이 부적절함
•
개선 방향:
◦
모든 원소가 K 이상인지 확인하는 로직 추가
◦
정확한 조건에 따라 섞는 횟수 증가
◦
종료 조건 명확히 설정
◦
조건 충족 시 루프를 조기 종료하는 로직 추가
import heapq
def solution(scoville, K):
# help(heapq)
cnt = 0
heapq.heapify(scoville)
# print(scoville)
# 최소 숫자가 K를 넘어가면 배열 전체 숫자가 다 넘어감
while scoville[0] < K:
if len(scoville) < 2:
return -1
# print(cnt)
lowest_hot = heapq.heappop(scoville)
second_hot = heapq.heappop(scoville)
scoville_rate = lowest_hot + (2 * second_hot)
heapq.heappush(scoville, scoville_rate)
cnt += 1
return cnt
Python
복사
놓친 부분 : 모든 음식의 스코빌 지수를 K 이상으로 만들 수 없는 경우에는 -1을 return.