[백준/Python] 2075. N번째 큰 수

2024. 10. 25. 21:55·코딩테스트/BAEKJOON
728x90
반응형

🍀 문제유형: 최소힙

🍀 문제설명 (링크 참조) 

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

 

🍀 풀이코드 

- 첫 시도는 최대 힙 만들어서 n번째 뽑아야지! 했는데 메모리 초과 ~.~

import heapq as hq
n = int(input())
h = []
for _ in range(n):
    tmp = list(map(int, input().split()))
    for t in tmp:
        hq.heappush(h, -t)
print(-h[n-1])

 

- 그래서 뭐 어떻게 해야 되지.. 하다가, 최소힙을 각 행마다 만드는 것도 무리일 것 같고,, 고민하다가 해설집 힌트 조금 봤다. n번째로 큰 수는, 가장 큰 수 n개 중에 제일 작은 값이다의 다른 말.. 와우 아이디어,,

- 여튼 최소힙으로 문제 풀되, n개로 개수를 유지하면서, 최솟값을 반복적으로 제거하면 가장 큰수 n개만 남게 된다. 이때 n번째 큰 수는 곧 최소힙의 최솟값이니까 heappop()하면 된다. 

- 이때 주의해야 할 점은, else문에서 현재 값 push 후에 pop해야 한다. pop먼저 하고 push를 하게 되면, 최솟값을 제거하는 게 아닐 수도 있다. 

import heapq as hq
n = int(input())
h = []

for _ in range(n):
    tmp = list(map(int, input().split()))
    for c in tmp:
        if len(h) < n:
            hq.heappush(h, c)
        else: # 작은 숫자는 차례 차례 없애고 큰 숫자들로 채우는 거지 !!
            hq.heappush(h, c)
            hq.heappop(h)
            
print(h[0])

 

🍀 배운 점 

- "n번째 큰 수 = 가장 큰 수 n개 중 제일 작은 값" >> 이 아이디어는 최소힙이 오름차순으로 저장한다는 점에서 생각해낼 줄 알아야 한다는 점.. 연습만이 살길이겠지. 

 

728x90
반응형
저작자표시 비영리 변경금지

'코딩테스트 > BAEKJOON' 카테고리의 다른 글

[백준/Python] 3085. 사탕게임  (1) 2024.10.26
[백준/Python] 3040. 백설 공주와 일곱 난쟁이  (0) 2024.10.26
[백준/Python] 1935. 후위 표기식 2  (1) 2024.10.25
[백준/Python] DFS/BFS-5014번. 스타트링크  (1) 2024.10.12
[백준/Python] DFS/BFS-1697번. 숨바꼭질  (3) 2024.10.12
'코딩테스트/BAEKJOON' 카테고리의 다른 글
  • [백준/Python] 3085. 사탕게임
  • [백준/Python] 3040. 백설 공주와 일곱 난쟁이
  • [백준/Python] 1935. 후위 표기식 2
  • [백준/Python] DFS/BFS-5014번. 스타트링크
heeya16
heeya16
개발 공부 냠냠
  • heeya16
    개발자 희야
    heeya16
  • 전체
    오늘
    어제
    • 분류 전체보기 (106)
      • 코딩테스트 (66)
        • 프로그래머스 (38)
        • SWEA (2)
        • BAEKJOON (26)
      • 알고리즘 (7)
      • 자료구조 (19)
      • 프로젝트 (5)
      • 취업 주르륵 (3)
      • 데이터베이스 (0)
      • IT지식 (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    1003
    10448
    10773
    10월
    10진수
    11047
    11399
    11403
    11866
    1449
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
heeya16
[백준/Python] 2075. N번째 큰 수
상단으로

티스토리툴바