[Boj문제풀이]

[Boj/백준] 2075 Python

ki7348 2021. 10. 4. 15:02

문제출처: https://www.acmicpc.net/problem/2075

 

2075번: N번째 큰 수

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

www.acmicpc.net

 

 

1. 문제 접근 방식

배열을 있는 그대로 다 append하면 시간초과 혹은 메모리초과가 발생할 것 같았다.

그래서 최대한 덜 append하는 방법을 생각하다가

첫 행의 원소는 힙에 다 삽일을 하고

두번째 행의 원소부터는 하나씩 꺼내서 heappop한거보다 크면 heappush하고 아니면 원래 heappop한 원소를 다시 heappush하는 방식으로 풀었다.

 

 

2. 내가 푼 코드

import sys
import heapq
n = int(sys.stdin.readline())

graph = []
heap = []
heapq.heapify(heap)

first_arr = list(map(int,sys.stdin.readline().split()))
for i in first_arr:
    heapq.heappush(heap,i)

for _ in range(n-1):
    arr = list(map(int,(sys.stdin.readline().split())))
    heapq.heapify(arr)
    for i in arr:
        a = heapq.heappop(heap)
        if i > a:
            heapq.heappush(heap,i)
        elif i < a:
            heapq.heappush(heap,a)

print(heapq.heappop(heap))

 

 

3. 결과 및 느낀점

메모리가 부족할거 같을때는 원소를 무작정 다 배열에 넣지 말고

하나하나 끊어서 넣고 비교하자 정렬 문제에는,,,

특히 2차원 리스트에서는

행마다 끊어서!

'[Boj문제풀이]' 카테고리의 다른 글

[Boj/백준] 2170 Python  (0) 2021.10.05
[Boj/백준] 13164 Python  (0) 2021.10.05
[Boj/백준] 7983 Python  (0) 2021.10.04
[Boj/백준] 11497 Python  (0) 2021.10.04
[Boj/백준] 17129 Python  (0) 2021.09.30