[적용한 알고리즘]
우선순위 큐
[아이디어]
우선 순위 큐의 크기를 N개로 항상 유지해줘야겠다.
메모리가 개빡셈.
[생각의 흐름 / 절차]
1. 우선순위 큐의 크기를 N개로 유지해줘야겠다. (min-heap)
2. 매 한 열씩 돌면서 pq에 넣어주고, N개만큼 pop해주자.
3. 그럼 마지막에 남는 pq의 top에는 딱 N번째 숫자가 있을 것이다.
[교훈]
메모리 관리는 배열의 크기를 최대한 줄이는 걸로 시작하자.
<코드>
#include <cstdio>
#include <queue>
#include <algorithm>
#define max 1501
using namespace std;
int main(){
int n;
int a[max][max] = { 0 };
priority_queue<int, vector<int>, greater<int>> pq;
scanf("%d", &n);
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++){
scanf("%d", &a[i][j]);
}
}
for (int i = 0; i < n; i++){
pq.push(a[i][0]);
}
for (int j = 1; j < n; j++){
for (int i = 0; i < n; i++){
pq.push(a[i][j]);
}
for (int i = 0; i < n; i++){
pq.pop();
}
}
printf("%d", pq.top());
return 0;
}
'Algorithm > BOJ' 카테고리의 다른 글
[백준] 12886번 돌 그룹 (0) | 2019.11.20 |
---|---|
[백준] 1715번 카드 정렬하기 (0) | 2019.11.20 |
[백준] 16948번 데스 나이트 (0) | 2019.11.18 |
[백준] 16928번 뱀과 사다리 게임 (0) | 2019.11.18 |
[백준] 3197번 백조 (0) | 2019.11.16 |