티스토리 뷰
알고리즘
자료구조, 우선순위 큐
문제 핵심
입력받은 값들을 절댓값을 기준으로 내림차순으로 뽑아야 한다.
코드는 다음과 같다.
priority_queue<pair<int, int>, vector<pair<int, int> >, greater<pair<int, int> > > pQ;
greater는 오름차순 정렬로 큐의 경우 front에서 원소를 빼내므로 오름차순으로 정렬하여야 맨 앞에 가장 작은 값이 온다.
pair의 첫 번째는 입력받은 값의 절댓값으로, 두 번째는 입력받은 값으로 설정한다.
pQ.push({abs(t), t});
전체 코드
#include <cstdio>
#include <queue>
#include <vector>
#include <cmath>
using namespace std;
int main(){
// freopen("input.txt", "rt", stdin);
int n, t, i;
priority_queue<pair<int, int>, vector<pair<int, int> >, greater<pair<int, int> > > pQ;
scanf("%d", &n);
for(i=0; i<n; i++){
scanf("%d", &t);
if(t){
pQ.push({abs(t), t});
} else{
if(!pQ.empty()){
printf("%d\n", pQ.top().second);
pQ.pop();
} else{
printf("0\n");
}
}
}
return 0;
}
'알고리즘' 카테고리의 다른 글
[백준 11729번/c++] 하노이 탑 이동 순서 (0) | 2022.01.17 |
---|---|
[프로그래머스/c++] 행렬의 덧셈(2차원 vector) (0) | 2022.01.17 |
[프로그래머스/c++] 핸드폰 번호 가리기(string 클래스) (0) | 2022.01.17 |
[프로그래머스/c++] 콜라츠추측(long long 자료형) (0) | 2022.01.17 |
[프로그래머스/c++] 최대공약수와 최소공배수(유클리드 호제법) (0) | 2022.01.17 |