한줄 후기 : 대문자 보라고;
https://www.acmicpc.net/problem/16288
문제에 큐라 그래서 큐를 썼는데 풀고 보니 큐 안써도 풀릴 문제 같다.
문제가 해석하기 좀 어려(?) 울 수도 있는데 그냥 입국 심사대에 1~n 까지 골고루 설 수 있지만 대신 순서가 바뀌어선 안된다. 즉 3개의 심사대에 1~5 가 들어간다 가정하면, 1이 a번 심사대에 가고, 2가 b번 심사대에 가고, 3이 1 뒤에 줄을 서서 a번 심사대로 갈 수도 있다. 그러나 갑자기 3이 가기도 전에 4가 c번 심사대에 갈 수는 없다. 뭐 이런 이야기다.
그래서 나는 입국 심사대를 큐로 생각하고, 주어진 순서대로 입국심사대에 있는 사람이 나보다 작은 수이면 줄을 서고, 아니면 못서는데 만약 지금 나온 순서에서 주어진 큐에 다 담을 수 없게 되면 그건 잘못된 순서라 생각했다.
#include <iostream>
#include <queue>
using namespace std;
queue<int> pass[101];
int main(){
int n, passport;
int arr[101];
cin >> n >> passport;
for(int i=0; i<n; i++){
scanf("%d", &arr[i]);
}
for(int i=0; i<n; i++){
bool check = false;
for(int j=1; j<=passport; j++){
if(pass[j].empty()){
pass[j].push(arr[i]);
check = true;
break;
}
if(arr[i] > pass[j].back()){
pass[j].push(arr[i]);
check = true;
break;
}
}
if(check == false){
cout << "NO";
return 0;
}
}
cout << "YES";
return 0;
}
이걸 세번이나 틀렸었는데 알고 보니 그 이유가 YES를 yes로 출력했다 ㅋㅋ