이중우선순위큐

108번뇌·2021년 8월 3일
0

https://programmers.co.kr/learn/courses/30/lessons/42628

특이사항 딱히 없는 문제.(패스 해도됨)

#include <string>
#include <vector>
#include <deque>
#include <algorithm>

using namespace std;
//1.스트링 문자열과 숫자 분리
//2.string D 1과 D-1을 기준으로 일치하면 D1:: 첫번째꺼 삭제 D-1 : 마지막ㅈ\째꺼 사제
vector<int> solution(vector<string> operations) {
	vector<int> answer;
	deque<int> dTemp;
	string sfirst = "D 1";//첫번째꺼 삭제(제일 큰거 삭제)
	string slast = "D -1";//마지막꺼 삭제(제일 작은거 삭제)

	for (int i = 0; i < operations.size(); i++)
	{
		if (operations[i][0] == 'I')
		{
			string sTemp = operations[i].substr(2, operations[i].size()-2);
			dTemp.emplace_back(stoi(sTemp));
		}
		else if (operations[i] == sfirst)
		{
			if (dTemp.size() <= 0)	continue;
			else
			{
				sort(dTemp.begin(), dTemp.end(), [](int a, int b) {
					return a > b;
				});//내림차순 정렬합니다

				dTemp.pop_front();
			}
		}
		else if (operations[i] == slast)
		{
			if (dTemp.size() <= 0)	continue;
			else
			{
				sort(dTemp.begin(), dTemp.end(), [](int a, int b) {
					return a > b;
				});//내림차순 정렬합니다

				dTemp.pop_back();
			}
		}
	}

	if (dTemp.size() <= 0)
	{
		for (int i = 0; i < 2; i++)
		{
			answer.emplace_back(0);
		}
	}
	else
	{
		sort(dTemp.begin(), dTemp.end(), [](int a, int b) {
			return a > b;
		});//내림차순 정렬합니다
		answer.emplace_back(dTemp[0]);
		answer.emplace_back(dTemp[dTemp.size() - 1]);
	}

	return answer;
}
profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글