문제 :
https://www.acmicpc.net/problem/1655
1655번: 가운데를 말해요
첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1
www.acmicpc.net
도움받은 블로그 :
[1655번] 가운데를 말해요
문제 출처 : https://www.acmicpc.net/problem/1655 알고리즘 분석 : 문제 해결에 필요한 사항 1. 최대 힙, 최소 힙 2. Priority Queue 3. pq로 중간 값 구하는 방식 중간값 구하기 알고리즘은 다음과 같다. 1. 최..
www.crocus.co.kr
#include <stdlib.h>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
priority_queue<int, vector<int>, greater<>> big_queue;
priority_queue<int, vector<int>, less<>> small_queue;
int main() {
int N;
scanf_s("%d", &N);
for (int i = 0; i < N; i++) {
int num;
scanf_s("%d", &num);
if (small_queue.size() == big_queue.size()) {
small_queue.push(num);
}
else {
big_queue.push(num);
}
if (!small_queue.empty() && !big_queue.empty() && big_queue.top() <= small_queue.top()) {
int n1, n2;
n1 = small_queue.top(); n2 = big_queue.top();
small_queue.pop(); big_queue.pop();
small_queue.push(n2); big_queue.push(n1);
}
printf("%d\n", small_queue.top());
}
return 0;
}
'전공공부 > 코딩테스트' 카테고리의 다른 글
(c++) 프로그래머스 문자열 압축 (0) | 2022.01.04 |
---|---|
(c++) 프로그래머스 신규 아이디 추천 (0) | 2022.01.04 |
(c++) 백준 12865 평범한 배낭 (0) | 2021.12.29 |
(c++) 프로그래머스 해시 위장 (0) | 2021.12.11 |
(c++) 프로그래머스 해시 완주하지 못한 선수 (0) | 2021.12.11 |