본문 바로가기
프로그래머스/2단계

(Python/LV2) 압축

by windy7271 2022. 9. 27.
728x90
반응형

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/17684

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이:

def solution(scoville, K):
    sorted(scoville)
    count = 0

    while min(scoville) < int(K):
        if scoville[0] < int(K) :
            x = scoville.pop(0)
            y = scoville.pop(0)
            scoville.insert(0, x + (2*y))
            count += 1
    return count
맞는 풀이 같지만 시간, 메모리 부족

 

힙을 사용했지만 조금 틀림

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

 

 

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

or 가 아니라 and 였고

-1 경우를 while 문 안에 넣었어야함

반응형

댓글