CodingTest/Programmers
[ 프로그래머스 ] 더 맵게
EEOOOO
2022. 6. 20. 23:40
/ 1번째 제출 /
import heapq
def solution(scoville, K):
answer = 0
heapq.heapify(scoville)
count = 0
while scoville:
first = heapq.heappop(scoville)
if K <= first or not scoville:
break
else:
second = heapq.heappop(scoville)
new = first + second*2
heapq.heappush(scoville,new)
count += 1
answer = count
return answer
채점 결과
정확성: 57.1
효율성: 23.8
합계: 81.0 / 100.0
정확성 테스트에서 1, 3, 8, 14의 케이스에서 막혔습니다.
사실은 타임리밋을 두고 빠르게 해결하려다가 보니 검토의 시간을 안 가졌습니다.
그래서였을까!! 다시 검토해서 제출해보겠습니다.
/ 2번째 제출 /
import heapq
def solution(scoville, K):
answer = 0
heapq.heapify(scoville)
count = 0
g = []
while scoville:
first = heapq.heappop(scoville)
if K <= first:
answer = count
break
if not scoville:
answer = -1
break
else:
second = heapq.heappop(scoville)
new = first + second*2
heapq.heappush(scoville,new)
count += 1
return answer
어휴.. " 모든 음식의 스코빌 지수를 K 이상으로 만들 수 없는 경우에는 -1을 return 합니다. " 의 조건을 빼먹고 구현했습니다. 아마 테스트케이스 1, 3, 8, 14가 값이 -1이 나와야했었던 듯 합니다.
항상 제출할 때는 검토에 검토를 거쳐 구현합시다.
해서 해당 사항을 넣어줬습니다.
while문으로 scoville이 존재할 때를 가정하고 계속 연산을 하는데,
1) 가장 최소값이 스코빌 기준치보다 높다면 연산을 중단하고 현재까지의 연산횟수를 리턴합니다.2) 만약 끝까지 갔는데도 scoville이 존재하지 않는다면 -1을 리턴하게 합니다.