반응형
250x250
Notice
Recent Posts
Recent Comments
Link
DecordRay
[프로그래머스] Level2 : 더 맵게[Python] 본문
728x90
반응형
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42626
풀이 :
1. 입력으로 받은 scoville 리스트를 힙(최소힙)으로 변환
2. 무한 루프 실행
종료 조건 2가지
1. 모든 음식의 스코빌 지수를 K 이상으로 만들 수 없는 경우
- scoville리스트의 원소가 1개이고, 첫번째 원소가 K보다 작으면 chk=False 저장 후 종료
2. 모든 음식의 스코빌 지수를 K 이상으로 만들 수 있는 경우
- n1(첫번째 원소)이 K보다 크거나 같으면 종료
3. 종료 조건 해당하지 않을 경우 temp변수에 새로운 스코빌 지수 저장 후 answer + 1
4. while문 종료될 때까지 반복
* Tip - 최소힙이란? https://decordray.tistory.com/27 참고
코드 :
import heapq
def solution(scoville, K):
answer = 0
heapq.heapify(scoville) # 입력으로 받은 scoville리스트를 힙(최소힙)으로 변환
chk = True
while True:
if len(scoville) == 1 and scoville[0] < K:
chk = False
break
n1 = heapq.heappop(scoville) # scoville의 첫번째 원소 pop
if n1 >= K: # 첫번째 원소가 K보다 크거나 같으면 반복문 종료
break
n2 = heapq.heappop(scoville) # 첫번째 원소가 K보다 작다면 다시 첫번째 원소 pop(실질적 두 번째 원소)
temp = n1 + (n2 * 2) # 첫번째 원소를 저장한 n1과 두번째 원소를 저장한 n2로 새로운 스코빌 지수 생성
heapq.heappush(scoville,temp) # 새로운 스코빌지수 scoville리스트에 추가
answer += 1
if chk == False: # chk == False일 경우 K이상으로 만들 수 없는 경우이므로 answer = -1
answer = -1
return answer
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Level2 : 주식가격[Python] (0) | 2023.01.23 |
---|---|
[프로그래머스] Level2 : 피로도[Python] (0) | 2023.01.20 |
[프로그래머스] Level2 : [3차] 압축[Python] (0) | 2023.01.18 |
[프로그래머스] Level2 : k진수에서 소수 개수 구하기[Python] (0) | 2023.01.16 |
[프로그래머스] Level2 : 귤 고르기[Python] (0) | 2023.01.16 |
Comments