스쳐가는비
devtravel
스쳐가는비
전체 방문자
오늘
어제
  • 분류 전체보기 (108)
    • 🎵 Daily (0)
    • 📚 Computer Science (11)
      • Algorithm (9)
      • Design Pattern (2)
    • 🔥 Programming (23)
      • C# (3)
      • C++ (5)
      • WPF (0)
      • Python (1)
      • OpenCV (9)
      • ML & DL (5)
    • 🔥 Web (13)
      • HTML (6)
      • JavaScript (7)
    • 📌 Tool (2)
      • Git (2)
      • Etc (0)
    • 📖 Certificate (10)
      • 컴활 1급 (2)
      • SQL 개발자 (2)
      • 리눅스 마스터 (0)
      • 정보처리기사 (0)
      • 사무자동화산업기사 (0)
      • ADsP (6)
    • 💻 OnlineJudge (49)
      • Baekjoon (49)
      • GoormEdu (0)
GitHub Contribution
Loading data ...

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
스쳐가는비

devtravel

[백준 / BOJ] C++ 11286 절대값 힙
💻 OnlineJudge/Baekjoon

[백준 / BOJ] C++ 11286 절대값 힙

2022. 9. 26. 11:13

https://www.acmicpc.net/problem/11286

 

11286번: 절댓값 힙

첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0

www.acmicpc.net

 

 

 

풀이

우선순위 큐의 greater의 자료형을 살펴보면 struct인 것을 알 수 있습니다.

절댓값을 구하는 operator를 struct으로 만들어 쉽게 해결할 수 있습니다.

 

Code

#include <iostream>
#include <vector>
#include <queue>

using namespace std;

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

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N;

	cin >> N;

	priority_queue<int, vector<int>, AbsGreater> q;

	while (N--)
	{
		int x;

		cin >> x;

		if (x != 0)
		{
			q.push(x);
		}

		else if (x == 0)
		{
			if (q.empty() == true)
				cout << "0" << '\n';

			else {
				cout << q.top() << '\n';
				q.pop();
			}
		}
	}
}

'💻 OnlineJudge > Baekjoon' 카테고리의 다른 글

[백준 / BOJ] C++ 1766 문제집  (0) 2022.10.06
[백준 / BOJ] C++ 1655 가운데를 말해요  (0) 2022.09.26
[백준 / BOJ] C++ 1927 최소 힙  (1) 2022.09.26
[백준 / BOJ] C++ 11866 요세푸스 문제 0  (0) 2022.08.22
[백준 / BOJ] C++ 2164 카드 2  (0) 2022.08.22
    '💻 OnlineJudge/Baekjoon' 카테고리의 다른 글
    • [백준 / BOJ] C++ 1766 문제집
    • [백준 / BOJ] C++ 1655 가운데를 말해요
    • [백준 / BOJ] C++ 1927 최소 힙
    • [백준 / BOJ] C++ 11866 요세푸스 문제 0
    스쳐가는비
    스쳐가는비
    The biggest risk is not taking any risk

    티스토리툴바