출처: 프로그래머스 코딩 테스트 연습
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() 만으로 통과한다.
'🛡️ 코딩 테스트' 카테고리의 다른 글
C# 야근 지수 / 프로그래머스 [Lv.3] (0) | 2023.05.03 |
---|---|
C# 네트워크 - DFS BFS / 프로그래머스 [Lv.3] (0) | 2023.05.02 |
C# 이모티콘 할인행사 - DFS / 프로그래머스 [Lv.2] (0) | 2023.04.30 |
C# 리코쳇 로봇 - BFS / 프로그래머스 [Lv.2] (0) | 2023.04.29 |
C# 디펜스 게임 - 최소 정렬 / 프로그래머스 [Lv.2] (0) | 2023.04.19 |