중요한 조건은 드래그한 저 줄이다.
배열에 입출력에 대한 조건이 있다.
1. 입력할 때 0이 아닐 때,
2. 출력할 때 0일 때,
하지만 출력에 조건이 있다.
1. 절대값이 가장 작을 것
2. 절대값이 가장 작은 수가 중복될 경우 가장 작은수 출력(= 음수 출력)
출력에 대한 조건에 우선 순위에 대한 명확한 기준이 있다.
이는 우선 순위 큐로 구현하기 적합함을 알 수 있다.
#include <string>
#include <vector>
#include <iostream>
#include <map>
#include <algorithm>
#include <stack>
#include <queue>
#include <cmath>
using namespace std;
struct compare {
bool operator()(int a, int b) {
if (abs(a) == abs(b)) {
return a > b;
}
return abs(a) > abs(b);
}
};
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n, x;
priority_queue<int, vector<int>, compare> q;
vector<int> v;
cin >> n;
while (n-- != 0)
{
cin >> x;
if (x == 0)
{
if (q.empty())
{
v.push_back(0);
}
else
{
v.push_back(q.top());
q.pop();
}
}
else
{
q.push(x);
}
}
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << endl;
}
return 0;
}
'콘솔창 & 윈도우창 > 코딩 테스트' 카테고리의 다른 글
[실버3] 1021 회전하는 큐 (0) | 2024.10.18 |
---|---|
[실버3] 17253 삼삼한 수 2 (0) | 2024.10.18 |
[백준 실버4] 2164 카드2 (0) | 2024.10.17 |
프로그래머스 LV.1 햄버거 만들기 (2) | 2024.10.14 |
[백준 골드4] 17298 오큰수 (1) | 2024.10.14 |