#11286 절대값 힙

princess·2021년 1월 14일
0

알고리즘

목록 보기
10/21

💯 문제 → 최소 힙을 이용하는 문제인데, 절대값을 이용하는 문제 ! 절대값으로 정렬을 하고 입력값이 0인데, 만약 작은 절대값이 여러개 일 경우 값이 작은 것으로 출력

<💭 방법>

🎈 1 최소힙 사용하는 방법

  • 파이썬에서 제공하는 최소힙을 사용함
  • 최소힙을 정렬하는 기준은 절대값을 이용함
  • 만약 들어온 수가 0일경우에는 삭제를 하고 만약 절대값이 작은 것이 여러개 일 경우 더 작은 값을 삭제하고 출력함

<😍 첫번째 코드>

for i in range(n):
    item = int(sys.stdin.readline())

    if item != 0:
        heapq.heappush(Min_heap, (abs(item), item))
    
    else:
        if not Min_heap:
            print(0)
        
        else:
            print(heapq.heappop(Min_heap)[1])
  • 입력을 들어온 대로 배열로 받고 함수로 그 배열을 전달
  • 전달된 배열의 원소에 0이 아닐 경우 절대값을 기준으로 하여 최소 힙에 item을 넣음 (기준만 절대값이고 실제 들어가는 수는 입력 받은 수 그대로임)
  • 0일 경우 힙이 비어있냐에 따라 출력값을 다르게 해줌

느낀점

이번 문제는 앞에서 풀었던 최대 힙을 이용하는 문제와 완전 거의 유사했다. 그래서 이번엔 거의 손안대고 코 풀기를 했지 ㅎㅎ ,, 그냥 기준만 바꾸면 되니까 ~~ 이번 기회를 통해서 파이썬을 이용한 힙은 거의 확실히 코드를 잡은듯 ! 저번 코드에서 조금 코드를 줄여봤다 ㅎㅎ 이렇게 편리한 방법이 있었는데 아깐 왜 함수까지 써 가면서 했지 ,, ㅠㅠ 그래도 확실히 알았으니 다행이당

profile
성장하는 머신러닝 엔지니어

0개의 댓글