문제 링크입니다: https://www.acmicpc.net/problem/1966
전형적인 브루트 포스 문제였습니다.
지저분하게 코드를 작성했지만 양해해주시면 감사하겠습니다!
#include <iostream>
#include <queue>
#include <cstring> //memset
using namespace std;
const int MAX = 100;
int N, M;
int priority[MAX];
int order[MAX];
bool checked[MAX]; //몇등인지 체크했는지 여부
queue<int> q;
int Tth(void)
{
int rank = 1;
while (!q.empty())
{
int temp = q.front();
q.pop();
int idx = 0;
bool top = true;
while (1)
{
//범위 초과
if (idx >= N)
break;
if (idx == temp || checked[idx]) //해당 문서와 이미 체크한 문서 패스
{
idx++;
continue;
}
//우선순위가 더 큰 문서가 있다면
if (priority[temp] < priority[idx])
{
q.push(temp); //큐에 다시 넣고
top = false;
break;
}
idx++;
}
if (top) //제일 우선순위가 크다면
{
checked[temp] = true; //등수 체크
order[temp] = rank++; //등수 표시
}
}
return order[M];
}
int main(void)
{
int test_case;
cin >> test_case;
for (int i = 0; i < test_case; i++)
{
cin >> N >> M;
memset(checked, false, sizeof(checked));
for (int j = 0; j < N; j++)
{
cin >> priority[j]; //우선순위 입력
q.push(j);
}
cout << Tth() << endl;
}
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 12851번 숨바꼭질 2 (6) | 2018.06.19 |
---|---|
백준 1697번 숨바꼭질 (7) | 2018.06.19 |
백준 6603번 로또 (10) | 2018.06.18 |
백준 7579번 앱 (1) | 2018.06.18 |
백준 2688번 줄어들지 않아 (0) | 2018.06.17 |