🛡️ 코딩테스트/🛡️ 코테 : 프로그래머스
C# 이중우선순위큐 / 프로그래머스 [Lv.3]
맨텀
2023. 5. 1. 19:21
출처: 프로그래머스 코딩 테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/42628
나의 풀이
public class Solution {
public int[] solution(string[] operations)
{
var queue = new MyQueue();
foreach(string str in operations)
{
if(str == "D 1")
{
queue.DeleteMax();
}
else if(str == "D -1")
{
queue.DeleteMin();
}
else
{
int n = int.Parse(str.Split()[1]);
queue.Add(n);
}
}
return queue.Count > 0 ? new int[2]{ queue.Max, queue.Min } : new int[2]{ 0, 0 };
}
}
public class MyQueue
{
List<int> queue;
public MyQueue()
{
queue = new List<int>();
}
public int Count => queue.Count;
public int Max => queue[Count - 1];
public int Min => queue[0];
public void Add(int n)
{
queue.Add(n);
queue.Sort();
}
public void DeleteMin()
{
if(queue.Count > 0)
queue.RemoveAt(0);
}
public void DeleteMax()
{
if(queue.Count > 0)
queue.RemoveAt(queue.Count - 1);
}
}
우선순위가 존재하고, 정렬되며, 최대값 혹은 최소값을 지울 수 있는 자료구조는 만드는 문제.
우선순위 큐가 그러하듯 실제로는 힙 자료구조로 만들어야 하지만,
문제의 조건이 널널한 경우 리스트나 Array의 Sort() 만으로 통과한다.