코딩 테스트/프로그래머스

Lv2. 더 맵게

  • -
728x90
반응형

문제 보기 :  더 맵게 

 

프로그래머스

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

programmers.co.kr

 


문제

  • 정답률 : 60%


작성 코드

import heapq
def solution(scoville, K):
    answer = 0 
    heapq.heapify(scoville)
    
    while True:
        j1 = heapq.heappop(scoville)
        if j1 < K:
            j2 = heapq.heappop(scoville)
            if j2 < K:
                jj = j1 + (j2*2)
                heapq.heappush(scoville,jj)
            else:
                jj = j1 + (j2*2)
                heapq.heappush(scoville,j2)
                heapq.heappush(scoville,jj)
            answer+=1
            
        else:
            break
            
    return answer

난 heaqp를 잘 쓰지 않고 보통 리스트와 sort를 많이 썼는데,
이 문제는 heapq가 필요할 것 같아서 공부했다.

아래는 원소 입력 방법 / 리스트 자체로 입력 방법 / 맨 작은 원소 빼기 순서다.

1) 원소 입력 방법
heap = []
heapq.heappush(heap, 50)

2) 리스트 자체로 입력 방법
heap2 = [50 ,10, 20]
heapq.heapify(heap2)

3) 맨 작은 원소 빼기
result = heapq.heappop(heap)

위 코드로는 효율성 테스트는 모두 통과했는데, 5개 정도?에서 런타임 에러가 났다.

import heapq
def solution(scoville, K):
    answer = 0 
    heapq.heapify(scoville)
    
    while True:
        j1 = heapq.heappop(scoville)
        if j1 < K:
            if scoville != []:
                j2 = heapq.heappop(scoville)
                if j2 < K:
                    jj = j1 + (j2*2)
                    heapq.heappush(scoville,jj)
                else:
                    jj = j1 + (j2*2)
                    heapq.heappush(scoville,j2)
                    heapq.heappush(scoville,jj)
                answer+=1
            else:
                return -1
        else:
            break
            
    return answer

풀이

전체를 K 이상으로 만들 수 없는 경우 -1로 return하는데 이 예외 처리를 하지 않아서 발생했던 문제였다.그래서 if scoville != []: / else: 로 예외처리를 했고 정확도도 모두 통과했다!

320x100
728x90

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

Lv2. 숫자 변환하기  (0) 2024.09.03
Lv0. 겹치는 선분의 길이  (0) 2024.09.02
Lv2. 뒤에 있는 큰 수 찾기  (0) 2024.09.01
Lv2. 땅따먹기  (0) 2024.08.31
Lv2. 주식가격  (0) 2024.08.30
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.