프린터
URL :https://programmers.co.kr/learn/courses/30/lessons/42587#qna
프린터에 인쇄 요청이 오는데 우선순위(Prioirties)에 따라서 인쇄 순서를 처리한다.
그 과정에서 내가 넣은 데이터(location)가 몇 번째로 인쇄가 되는지 리턴하는 문제이다.
public int Solution(int[] priorities, int location) {
int answer = 0;
Queue<KeyValuePair<int, int>> queueData = new Queue<KeyValuePair<int, int>>();
for (int i = 0; i < priorities.Length; i++)
{
queueData.Enqueue(new KeyValuePair<int, int>(i, priorities[i]));
}
while (true)
{
int max = queueData.Max(x => x.Value);
KeyValuePair<int,int> current = queueData.Dequeue();
if (current.Value == max)
{
if (current.Key == location)
return answer + 1;
else
{
answer++;
continue;
}
}
queueData.Enqueue(current);
}
}
역시나 처리하는 과정에서 문제를 풀이하고 이해하는 과정이 쫌 많이 고생했다.
단순하게 우선순위 큐를 이용해서 구현을 했는데 location값이 0이 들어가는 순간 왜 리턴 값이 저런 식으로 나와야 하는지에 대해 고민을 엄청 했다. 결론은 큐를 소진하고 리턴되는 데이터를 처리하면 되는 것이었다.
우선순위 큐(Prioirty Queue)
★★☆☆☆
반응형
'개발 > 문제풀이' 카테고리의 다른 글
문제풀이) 프로그래머스)C#) 다리를 지나는 트럭 (0) | 2020.08.21 |
---|---|
문제풀이)프로그래머스)C# 스킬트리 (2) | 2020.08.20 |
문제풀이) 프로그래머스)C# 체육복 (0) | 2020.08.19 |
문제풀이)프로그래머스)C# 주식가격 (0) | 2020.08.18 |
문제풀이)프로그래머스)C#) K 번째 수 (0) | 2020.08.18 |
댓글