문제링크 : https://www.acmicpc.net/problem/11286
1. 입력 관련
힙과 관련된 문제였다. 힙을 직접 구현하지 않고 힙의 구조를 가지고 있는 priority queue 를 사용했다.
절대값이 가장 작다는 것은 0과 가장 가깝다는 것이다. 즉 -1 과 3 을 비교 했을 때 -1 이 더 가깝다는 것이다.
즉 가장 0과 가까운 수를 결정할 때 부호는 영향을 주지 않는다. 하지만 출력을 할 때는 부호를 신경써야 하기 떄문에 아래와 같은 pair 를 둔다.
pair<수, 부호>
소스는 아래와 같다.
#include <iostream>
#include <queue>
using namespace std;
int N, inp;
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
pair<int, int> pqTop;
int main(void){
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> N;
for (int i = 0; i < N; i++) {
cin >> inp;
if(inp < 0) pq.push(make_pair(-inp, -1));
else if(inp > 0) pq.push(make_pair(inp, 1));
else {
if(pq.empty()) cout << 0 << '\n'; // pq 가 비었는데 pop 요청이 들어올 경우 0 출력
else{
cout << pq.top().first * pq.top().second << '\n';
pq.pop();
}
}
}
return 0;
}
'PS(Problem Solving) > soleved.ac CLASS' 카테고리의 다른 글
[solved.ac CLASS 3] 백준 6064 카잉달력 (0) | 2022.08.31 |
---|---|
solved.ac CLASS 3 백준 1931 회의실 배정 (0) | 2022.07.11 |
solved.ac CLASS 3 백준 1389 (0) | 2022.06.27 |
백준 2579 (계단 오르기) (0) | 2022.05.09 |
solved.ac CLASS 2 백준 2292(벌집) (0) | 2021.10.22 |