백준
백준2075 - N번째 큰 수
개발하는꼬마
2020. 3. 21. 11:08
https://www.acmicpc.net/problem/2075
2075번: N번째 큰 수
첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다.
www.acmicpc.net
set을 이용하여 푼 문제이다. 입력 받은 수가 N개보다 작으면 아무런 비교 없이 set에 삽입하고 그 외의 경우는 set의 가장 큰 수인 root 노드와 비교하여 큰 수 이면 root를 삭제하고 현재 입력받은 수를 넣는다.
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <set>
using namespace std;
int main() {
int n;
int num;
set<int> st;
cin >> n;
for (int i = 0; i < n * n; i++) {
scanf("%d", &num);
if (st.size() < n) { //입력받은 수가 n개 미만이면
st.insert(num);
}
else { //입력받은 수가 n개 이상이면
if (*(st.begin()) < num) { //입력받은 수가 root노드보다 크면
st.erase(*(st.begin())); //root노드를 삭제하고
st.insert(num); //현재 입력받은 수를 삽입
}
}
}
printf("%d", *(st.begin())); //root노드를 출력
}