백준/실버
[백준 12789번] 도키도키 간식드리미
게임개발기원
2023. 5. 2. 18:18
문제링크 : https://www.acmicpc.net/problem/12789
12789번: 도키도키 간식드리미
인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define MAX 987654321
#define pii pair <int, int>
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int N;
cin >> N;
queue<int> arr;
for(int i=0; i<N; i++)
{
int n;
cin >> n;
arr.push(n);
}
stack <int> stack;
int index = 1;
while(!arr.empty())
{
if(arr.front() == index) //순서대로 받기
{
index++;
arr.pop();
}
else //못받은 인원
{
if(stack.empty() || stack.top() != index)
{
stack.push(arr.front());
arr.pop();
}
else if(stack.top() == index) //다음 순서
{
stack.pop();
index++;
}
}
}
while(!stack.empty()) //못받은 남인 인원
{
if(stack.top() != index) //순서가 틀림
{
cout << "Sad";
return 0;
}
else //순서가 맞음
{
stack.pop();
index++;
}
}
cout << "Nice";
return 0;
}
맨 처음 인원들을 순서가 맞다면 간식을 받고, 나머지 인원들은 대기 장소로 이동한다.
대기 장소의 인원들 또 확인하여 순서가 맞다면 간식을 받고, 아니라면 "Sad"를 출력하고 종료한다.