11286번: 절댓값 힙
첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net
[C언어/C++] 절대값 구하기 (abs, labs, fabs) 함수 사용법 & 예제 (tistory.com)
[C언어/C++] 절대값 구하기 (abs, labs, fabs) 함수 사용법 & 예제
코딩을 하다보면 가끔 숫자의 절대값이 필요한 경우가 있습니다. 이런 경우 따로 알고리즘 구현없이 abs, labs, fabs라는 절대값 반환 함수를 활용하여 절대값 숫자를 반환받을 수 있습니다. 절대값
coding-factory.tistory.com
일단 절대값 메서드는 기본 <iostream> 헤더파일에
abs 함수에 정의 되어 있다
절대값만 추가해서는 풀리는 문제가 아니었고, 절대값으로 비교를 하되, 원본은 가지고 있어야하기 때문에 pair<int, int>를 이용해줘야했다
priority_queue에서 pair로 선언하기 위해서는 int 부분을 모두 pair<int, int>로 바꿔주면 되는데, 다음과 같다
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>> pq;
최종 코드는
#include <iostream>
#include <queue>
using namespace std;
int main()
{
cin.tie(NULL);
cin.sync_with_stdio(false);
int n, m;
cin >> n;
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
for(int i=0; i<n; i++){
cin >> m;
if(m == 0){
if(pq.empty()) cout << 0 <<"\n";
else {
cout <<pq.top().second <<"\n";
pq.pop();
}
}
else {
pq.push({abs(m), m});
}
}
return 0;
}
'‡ CODING TEST STUDY ‡ > º 백준' 카테고리의 다른 글
[백준 17478번 C++] 재귀함수가 뭔가요? (1) | 2023.09.21 |
---|---|
[백준 10870번 C++] 피보나치 수 5 (1) | 2023.09.20 |
[백준 1927번 C++] 최소힙 (0) | 2023.09.16 |
[백준 11866번 C++] 요세푸스 문제 0 (0) | 2023.09.16 |
[백준 1966번 C++] 프린터 큐 (0) | 2023.09.15 |