Algorithem/백준 PS with code

백준 #2075 - [S2] N번째 큰 수 : 최소힙

2023. 6. 26. 19:38
목차
  1. 메모리 초과, 최소힙, heapq
  2. 코드

(python3)

 

2075번: N번째 큰 수

첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다.

www.acmicpc.net

 

메모리 초과, 최소힙, heapq

배열을 모두 받은 상태에서 맨 아랫줄 N개를 비교해서 가장 큰 값을 찾아서 pop 하는 방식으로 N번 수행해서 N번째 pop 되는 값을 구하려고 했는데, 메모리초과가 났습니다.

 

이 문제는 최소힙으로 정보를 읽어올때마다 항상 N개의 값만 저장하는 방식으로 해결할 수 있습니다.

파이썬에서는 배열을 최소힙 형태로 관리할 수 있는 heapq 모듈을 제공합니다.

아래 독스로 사용법을 확인할 수 있습니다.

 

heapq — Heap queue algorithm

Source code: Lib/heapq.py This module provides an implementation of the heap queue algorithm, also known as the priority queue algorithm. Heaps are binary trees for which every parent node has a va...

docs.python.org

최소힙에는 N개의 노드만 유지할거고, 새로운 정보를 넣고 N+1 개의 노드가 되면 헤드 (최소값) 을 pop 해줍니다.

모든 입력값에 대해 수행하고 나면, 헤드에 남은 값이 곧 우리가 찾는 N번째 큰 값이 됩니다.

 

코드

import sys
import heapq
def solution(input) :
    # 최소힙, 원소 N 개를 항상 유지
    # 모든 내용물을 다 넣었을때 head 가 우리가 구하고자하는 값이 됨

    H = []

    N = int(input().strip())
    
    cnt = 0
    for _ in range(N) :
        for n in list(map(int,input().split())) :
            heapq.heappush(H, n)
            cnt+=1
            if cnt > N :
                heapq.heappop(H)
    print(heapq.heappop(H))

        
input = sys.stdin.readline
solution(input)

 

my solved.ac :

 

solved.ac

알고리즘 문제해결 학습의 이정표 🚩 Baekjoon Online Judge 문제들의 난이도 및 티어 정보를 제공하는 사이트입니다.

solved.ac

'Algorithem > 백준 PS with code' 카테고리의 다른 글

백준 #9252 - [G4] LCS 2 : DP  (0) 2023.06.29
백준 #1138 - [S2] 한 줄로 서기  (0) 2023.06.27
백준 #1713 - [S1] 후보 추천하기 : 정렬  (0) 2023.06.24
백준 입문자를 위한 IDE 및 제출 팁  (0) 2023.06.22
백준 #2304 - [S2] 창고 다각형 : 구현  (0) 2023.06.21
  1. 메모리 초과, 최소힙, heapq
  2. 코드
'Algorithem/백준 PS with code' 카테고리의 다른 글
  • 백준 #9252 - [G4] LCS 2 : DP
  • 백준 #1138 - [S2] 한 줄로 서기
  • 백준 #1713 - [S1] 후보 추천하기 : 정렬
  • 백준 입문자를 위한 IDE 및 제출 팁
jamong5
jamong5
데이터 엔지니어를 희망하는 개발자 지망생
jamong5
JAMONG5
jamong5
전체
오늘
어제
  • 분류 전체보기 (171)
    • Algorithem (92)
      • 백준 PS with code (64)
      • 프로그래머스 PS with code (9)
      • 알고리즘 이론 (3)
    • Languages (19)
      • Python (10)
      • Java (2)
      • C & C++ (7)
    • SQL (42)
      • 프로그래머스 MySQL with code (41)
      • MySQL (1)
    • CS (2)
    • DevOps (4)
      • Docker (1)
      • Git, GitHub (3)
    • 코드 고민 (1)
    • 도움을 받은 정보 (2)
    • 책 (4)
    • 보드 게임 일기 (1)
    • 컴퓨터 일기 (2)
    • R&D 휴지통 (0)

블로그 메뉴

  • 소개
  • 홈
  • 태그

공지사항

인기 글

태그

  • backtracking
  • 시간초과
  • 스택
  • SQL
  • 그래프탐색
  • 백트래킹
  • 프로그래머스
  • 최소힙
  • heapq
  • 투포인터
  • 구현
  • 똥이
  • LCS
  • MySQL
  • 파이썬
  • 백준
  • Python
  • Git
  • 알고리즘
  • join

최근 댓글

최근 글

hELLO · Designed By 정상우.
jamong5
백준 #2075 - [S2] N번째 큰 수 : 최소힙
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.