반응형
https://www.acmicpc.net/problem/2075
import heapq
n = int(input())
table = [[0]*n for x in range(n)]
for i in range(n):
row = list(map(int, input().split()))
for j in range(n):
table[j][i] = row[j]
q = []
for i in range(n):
heapq.heappush(q, (-table[i].pop(), i))
for i in range(n):
num, idx = heapq.heappop(q)
if i == n-1:
print(-num)
break
next = table[idx].pop()
heapq.heappush(q, (-next, idx))
최대힙으로 풀이가 가능하다.
데이터의 행, 열을 뒤집어 테이블에 저장해주고
끝에서부터 하나씩 빼서 q에 넣어주고,
최대힙으로 최댓값을 계속 pop해준다.
빠진 최댓값의 idx를 받아와 그 테이블에서 pop해서 q에 넣어준다.
이를 n번 반복하면 된다.
댓글