https://programmers.co.kr/learn/courses/30/lessons/42626

 

코딩테스트 연습 - 더 맵게

매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같

programmers.co.kr


내 풀이

import heapq as hp
def solution(scoville,K):
    count=0
    hp.heapify(scoville)
    
    while (scoville[0]) < K:
        hp.heappush(scoville, hp.heappop(scoville) + hp.heappop(scoville) * 2)
        count +=1
        
        
        if len(scoville) ==1 and scoville[0]<K:
            return -1
        
        
    return count

 


밑에 if문 처리를 안해줘서 진짜 세시간은 고민했다.. 뭐가 잘못된거지 하고

요즘 코테를 풀다보면 예외처리를 안해줘서 틀리는 경우가 많은데 예외처리를 항상 좀 신경써줘야 할거같다.

다만 기존의 내 코드에서 조금 고친것은 heapify 라는 함수를 처음써봤다. 사실 이런게 있는지도 몰랐는데 꽤나 유용한거같다.

 


다른사람의 풀이

 

 

from heapq import heapify, heappush, heappop
def solution(scoville, K):
    heapify(scoville)
    for i in range(1000000):
        try:
            heappush(scoville, heappop(scoville)+(heappop(scoville)*2))
            if scoville[0] >= K: return i+1
        except:
            return -1

 

 

그런 의미에서 이분의 풀이가 깔끔하다고 느꼈다. 가장 좋아요를 많이받은 분 코드도 나쁘진 않지만 그냥 내 코드랑 비슷해서.. 


문제 자체가 어렵진 않은데 예외처리에 조금 더 신경을 쓰자.

'취준 > 프로그래머스' 카테고리의 다른 글

행렬 테두리 회전하기 - 파이썬  (0) 2022.06.06
짝 지어 제거하기 - 파이썬  (0) 2022.06.02
기능개발 - 파이썬  (0) 2022.05.30
124 나라의 숫자 - 파이썬  (0) 2022.05.30
오픈채팅방 - 파이썬  (0) 2022.05.26

+ Recent posts