프로그래머 – 마라탕

매운 음식을 좋아하는 레오는 모든 음식에 대해 Scoville 점수가 K 이상인 것을 원합니다. 모든 음식이 스코빌 점수가 K 이상이 되도록 레오는 아래 그림과 같이 가장 낮은 스코빌 점수를 가진 두 가지 음식을 특별한 방법으로 결합하여 새로운 음식을 만들었습니다.

섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)

Leo는 모든 음식의 Scoville 점수가 K 이상이 될 때까지 반복해서 섞습니다.
레오의 음식에 대한 Scoville 점수 배열과 원하는 Scoville 지수 K가 주어지면 모든 음식이 K보다 큰 Scoville 지수를 갖기 위해 모든 음식을 혼합해야 하는 최소 횟수를 반환하는 솔루션 함수를 작성합니다.

한계

  • 스코빌의 길이는 2보다 크고 1,000,000보다 작습니다.
  • K는 0보다 크고 1,000,000,000보다 작거나 같습니다.
  • 스코빌의 요소는 모두 0보다 크고 1,000,000보다 작습니다.
  • Scoville 점수가 K 이상인 음식이 없으면 -1을 반환합니다.

입력 및 출력 예

스코빌 /K/리턴

(1, 2, 3, 9, 10, 12) 7 2

I/O 예시 설명

  1. Scoville 등급이 1인 식품과 Scoville 등급이 2인 식품을 혼합하면 해당 식품의 Scoville 등급은 다음과 같습니다.
    새로운 음식에 대한 스코빌 지수 = 1 + (2 * 2) = 5
    음식에 대한 Scoville 점수 = (5, 3, 9, 10, 12)
  2. Scoville 등급이 3인 식품과 Scoville 등급이 5인 식품을 섞으면 해당 식품의 Scoville 등급은 다음과 같습니다.
    새로운 음식에 대한 스코빌 지수 = 3 + (5 * 2) = 13
    음식에 대한 Scoville 점수 = (13, 9, 10, 12)

모든 식품은 Scoville 점수가 7 이상이며 이중 혼합됩니다.

소스 코드

import heapq

def solution(scoville, K):
    answer = 0
    heapq.heapify(scoville) # min heap
    while True: # 무한 루프
        min1 = heapq.heappop(scoville)
        if min1 >= K: # 최소값이 K 보다 크면 break
            break
        
        elif len(scoville) == 0: # 리스트 길이가 0이면 -1 리턴
            answer = -1
            break
    
        min2 = heapq.heappop(scoville) # 두번째로 안매운 지수
        new_scoville = min1 + 2*min2 # 새 스코빌 지수
        heapq.heappush(scoville, new_scoville) # 삽입
        answer +=1 # 회수 + 1
    
    return answer

설명하다

  • 최소 힙 사용
  • 무한 루프에서 스코빌 값(min1) 추출 -> 최소 힙에서 추출한 최소값
    • min2는 두 번째로 덜 매운 지수입니다.
    • 레시피에 따라 두 가지를 섞고 heappush에 붓습니다.
    • 무한 루프이기 때문에 중단점에 도달할 때까지 계속 반복됩니다.
    • 매번 대답 + 1

Similar Posts

  • 2023.06.25 1071일

    로마서 14:13-23 내 습관이 누군가에게 상처를 준다면 나는 그것을 고치려고 노력할 것이다 내 성격이 누군가에게 불쾌감을 준다면 나는 그것을 고치려고 노력할 것이다 내 취향이 누군가에게 상처를 준다면 나는 그것을하고 싶지 않아 내 비판이 누군가에게 불쾌감을 준다면 난 그러고 싶지 않아 신은 나를 선택했어, 작은 남자 당신은 내가 양자로서 사업을 물려받게 하셨습니다. 네 이웃을 네 몸과…

  • 나이가 들면 다 그래? 방치해선 안 되는 만성기 뇌졸중

    우리 몸은 일교차가 약 10도 이상 벌어지는 환절기에 에너지를 많이 소모하여 쉽게 피로해집니다. 여기에 활동량이 늘고 스트레스가 가해지면 신체의 항상성을 유지하는 ‘신체자율조절기능’이 깨질 수 있습니다. 특히 중년 이후부터 노년기에 조금이라도 △업무에 집중하다 걷거나 잠에서 깬 뒤 한쪽 팔·다리에 힘이 빠진 경우 △시야가 좁아지거나 물건이 둘로 보이는 경우 △감각저하 증상을 느낀 경우는 나이 탓으로 생각하면 안…

  • 상간녀 소송 혐의 소명은

    상간녀 소송 혐의 소명은 부부가 결혼해서 함께 산다면 양보해야 할 것이 많기 때문에 갈등이 발생하는 것은 당연하다고 설명했습니다. 하지만 이런 갈등이 사소한 것이 아니라 배우자의 부정이나 폭력 같은 심각한 행동에서 비롯된 것이라면 대응하는 게 적절했습니다. 만약 결혼한 사실을 몰랐다는 주장이 존재할 경우 법원은 외도를 인정하지 않는다고 말했습니다. 이런 상황에서도 법원에서는 이를 간통으로 처벌하지 않을 가능성이…

  • 상관관계 분석을 통한 진로 대시보드 구축 및 효율성 파악

    기본적인 시각화와 상관관계 분석을 주제로 “채용 경로 효율성 분석 대시보드 구축”을 시도합니다. 대시보드를 통해 각 경로의 특성을 살펴보고 채용 경로의 효율성을 파악하고자 합니다. 데이터 수집 및 처리 수집/이용되는 데이터는 다음과 같습니다. 채용경로, 근속연수, 성별, 연령, 22년 평가결과, 급여수준, 입사년도 사용하는 데이터는 만 19~21세 참가자로 한정되어 있으며, 본연의 의도는 상대적으로 신인 참가자들의 효율성을 살펴보는 것입니다. 히스토리/데이터…

  • 파주시 난방비지원 신청방법 및 이용방법에 대해 알아보세요.

    파주는 전국 최초로 비상에너지 생활안정 지원을 합니다. 파주시 난방비 지원 신청방법과 가구당 20만원 지원 신청방법, 사용처를 소개한다. 이 글을 끝까지 읽으시면 에너지안정화보조금 파주난방비지원금 신청시기와 사용처를 알 수 있습니다. 파주시 난방비지원 신청 바로가기를 이용하시면 에너지안정지원금을 빠르게 받으실 수 있습니다. 하나씩 말씀드리겠습니다. 파주 난방비 지원. 경기도 파주시에서는 전 가구에 난방비 20만원을 지원하는 비상에너지생활안정지원금을 지원하고 있습니다. 신청기간은 2월…

  • 롯데 마트 하노이의 쇼핑 및 관광 센터

    롯데호텔은 하노이 중심에 위치한 5성급 호텔입니다. 아시다시피 롯데호텔의 시설과 조식은 하노이 최고 수준이며 한국인들에게 매우 친숙하다는 것이 가장 큰 장점입니다. 롯데마트호텔과 연결된 지하층에 있습니다. 롯데마트 입구 환전소 그리고 공항보다 환율이 조금 더 좋은 편이라 참고용으로 사용 가능합니다. 롯데마트는 작지 않은데 들어가자마자 한국음악이 흘러나온다.그리고 아마도 프로젝트의 절반 이상이 한국어로 작성되었을 것입니다. 한국에서 수입되는 제품은 시장에서 직접…