
https://www.acmicpc.net/problem/1966
문제를 읽고 헷갈렸던 점
문제 조건 요약
문서는 중요도(priority)를 가지고 있음
큐의 맨 앞에 있는 문서를 꺼낼 때
→ 더 높은 중요도의 문서가 있으면 → 다시 큐의 뒤로 보냄
→ 없으면 → 인쇄 (카운트 +1)
내가 찾는 문서가 몇 번째로 인쇄되는지 출력
내가 생각한 풀이 방법
문서 정보를 (중요도, 인덱스) 형태로 큐에 저장
큐를 돌면서
꺼낸 문서보다 더 높은 중요도의 문서가 있는지 확인
더 높은 게 있으면 → 다시 큐 뒤로
아니면 → 인쇄하고 카운트 증가
그 문서가 내가 찾던 문서라면 → 카운트 출력
작성한 코드
using System;
using System.Collections.Generic;
namespace backjoon
{
internal class Program
{
static void Main()
{
int testCase = int.Parse(Console.ReadLine());
for (int t = 0; t < testCase; t++)
{
string[] input = Console.ReadLine().Split();
int docCount = int.Parse(input[0]);
int targetIndex = int.Parse(input[1]);
string[] priorities = Console.ReadLine().Split();
Queue<(int priority, int index)> queue = new Queue<(int, int)>();
for (int i = 0; i < docCount; i++)
{
queue.Enqueue((int.Parse(priorities[i]), i));
}
int printOrder = 0;
while (queue.Count > 0)
{
var current = queue.Dequeue();
bool hasHigher = false;
foreach (var item in queue)
{
if (item.priority > current.priority)
{
hasHigher = true;
break;
}
}
if (hasHigher)
{
queue.Enqueue(current);
}
else
{
printOrder++;
if (current.index == targetIndex)
{
Console.WriteLine(printOrder);
break;
}
}
}
}
}
}
}