Dev
Home
  • 분류 전체보기 (10)
    • 알고리즘 (5)
    • 개발 (5)
      • javascript30 (0)
      • React (2)
      • HTML (0)
      • CSS (1)
      • 프로젝트 (1)
Home
  • 분류 전체보기 (10)
    • 알고리즘 (5)
    • 개발 (5)
      • javascript30 (0)
      • React (2)
      • HTML (0)
      • CSS (1)
      • 프로젝트 (1)
블로그 내 검색

Dev

  • 알고리즘

    [백준] 11279 최대 힙

    2021. 8. 12.

    by. Dev...

    https://www.acmicpc.net/problem/11279

     

    11279번: 최대 힙

    첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가

    www.acmicpc.net

    최대 힙을 이용하여 값을 넣고 최대 값을 뺄 수 있게 만드는 문제다.

    파이썬의 기본 라이브러리인 heapq를 이용하여 풀었다.

     

    정답코드

    from heapq import heappush, heappop
    import sys
    li = []
    
    for i in range(int(input())):
      inp = int(sys.stdin.readline())
      if inp != 0:
        heappush(li, (-inp, inp))
      elif inp == 0:
        if len(li) >= 1:
          print(heappop(li)[1])
        else:
          print(0)

    8번 라인에서 heappush(li, (-inp, inp))에서 튜플형식으로 (-inp, inp) 값을 넣는다. 그 이유는 heapq 라이브러리는 기본적으로 최소 힙을 사용한다.

     

    따라서 (-inp, inp) 를 힙에 넣으면 -inp를 기준으로 최소 힙을 구성하게 되므로 그 상태에서 inp 값을 보면 최대 힙이다. 그 다음 최대 값을 뽑아낼 때는 heappop 한 것의 1번 인덱스 값을 이용하면 된다.

    '알고리즘' 카테고리의 다른 글

    [프로그래머스] 주식가격  (0) 2021.05.17
    [프로그래머스] 다리를 지나는 트럭  (0) 2021.05.09
    [프로그래머스] 신규 아이디 추천  (0) 2021.05.08
    [백준] 1182 부분수열의 합  (1) 2021.05.06

    댓글

    관련글

    • [프로그래머스] 주식가격 2021.05.17
    • [프로그래머스] 다리를 지나는 트럭 2021.05.09
    • [프로그래머스] 신규 아이디 추천 2021.05.08
    • [백준] 1182 부분수열의 합 2021.05.06
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Daum Corp.

Designed by Nana
블로그 이미지
Dev...

티스토리툴바