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 |