[C++] 백준 11286. 절댓값 힙

멋진감자·2025년 3월 20일
0

알고리즘

목록 보기
112/117
post-thumbnail

🌽 문제

🥕 입출력

🥔 풀이

priority_queue에 비교 연산자를 직접 구현하여 해결했다.

struct 함수명 {
	bool operator()(자료형 a, 자료형 b) {
    	return 정렬 조건
    }
}

이 형태가 손에 잘 안익어서 외워야쓰긴 하겄는데
일단은 오늘 해본걸로 만족

return 조건도 구현할 때마다 헷갈린다.
암기하기 좋진 않지만 오늘 풀 때 생각해 둔 것은
b가 앞에 오는 걸로 생각하면 될 것 같다.

예를 들어 내림차순이라면 앞에 있는 b가 더 큰 수이므로 return a < b
거꾸로 오름차순이면 앞쪽 b보다 a가 클테니 return a > b와 같은 식이다.

🥬 코드

#include <iostream>
#include <queue>
#include <vector>
using namespace std;

struct cmp {
	bool operator()(int a, int b) {
		if (abs(a) == abs(b)) return a > b;
		else return abs(a) > abs(b);
	}
};

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int n, num;
	cin >> n;
	priority_queue<int, vector<int>, cmp> pq;
	for (int i = 0; i < n; i++) {
		cin >> num;
		if (num == 0) {
			if (pq.empty()) cout << "0\n";
			else {
				cout << pq.top() << "\n";
				pq.pop();
			}
		}
		else {
			pq.push(num);
		}
	}

	return 0;
}

🥜 채점

profile
난멋져

0개의 댓글

관련 채용 정보