[Algo] Stack/Queue/Heap/Proprity Queue/Tree

East Silver·2021년 11월 2일
0

Stack

1. hacker rank - Equal Stacks

최대값을 기준으로 while문을 돌리면 시간초과가 난다. 최소값을 구해서 풀면 통과!

def equalStacks(h1, h2, h3):
    s1 = sum(h1)
    s2 = sum(h2)
    s3 = sum(h3)
    while True:
        if s1 == s2 and s2 == s3:
            return s1
        minsum = min(s1,s2,s3)
        
        if minsum < s1:
            s1 -= h1.pop(0)             
        if minsum < s2:
            s2 -= h2.pop(0)                        
        if minsum < s3:
            s3 -= h3.pop(0)
        

Heap

1. 프로그래머스 - 더 맵게

  • 원소가 들어있는 리스트를 힙으로 만들려면 heapq 모듈의 heapify()라는 함수에 사용하면 됩니다.
import heapq

def solution(scoville, K):
    answer = 0
    heapq.heapify(scoville)
    while len(scoville):
        x = heapq.heappop(scoville)
        if x < K:
            y = heapq.heappop(scoville) * 2
            tmp = x + y
            heapq.heappush(scoville,tmp)
            answer += 1
        else:
            return answer
        if len(scoville) == 1 and scoville[0] < K:
            return -1
#조금 더 깔끔

def solution(scoville, K):
    answer = 0
    heapq.heapify(scoville)
    while scoville[0] < K:
        tmp = heapq.heappop(scoville) + (heapq.heappop(scoville) * 2)
        heapq.heappush(scoville,tmp)
        answer += 1
        if len(scoville) == 1 and scoville[0] < K:
            return -1
    return answer
profile
IOS programmer가 되고 싶다

0개의 댓글

관련 채용 정보