문제
...(생략) 사람들은 현재 1열로 줄을 서있고, 맨 앞의 사람만 이동이 가능하다. 인규는 번호표 순서대로만 통과할 수 있는 라인을 만들어 두었다. 이 라인과 대기열의 맨 앞 사람 사이에는 한 사람씩 1열이 들어갈 수 있는 공간이 있다. 현재 대기열의 사람들은 이 공간으로 올 수 있지만 반대는 불가능하다. 승환이를 도와 프로그램을 완성하라.
입력
입력의 첫째 줄에는 현재 승환이의 앞에 서 있는 학생들의 수 N(1 ≤ N ≤ 1,000,자연수)이 주어진다.
다음 줄에는 승환이 앞에 서있는 모든 학생들의 번호표(1,2,...,N) 순서가 앞에서부터 뒤 순서로 주어진다.
출력
승환이가 무사히 간식을 받을 수 있으면 "Nice"(따옴표는 제외)를 출력하고 그렇지 않다면 "Sad"(따옴표는 제외)를 출력한다.
Input
5
5 4 1 3 2
Output
Nice
Code
#include <iostream>
#include <stack>
using namespace std;
int main(){
ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int N, temp, cnt=1;
cin>>N;
stack<int> bottom;
while(N--){
cin>>temp;
if(cnt==temp) cnt++;
else bottom.push(temp);
while (!bottom.empty() && bottom.top()==cnt)
{
bottom.pop();
cnt++;
}
}
if(bottom.empty()) cout<<"Nice";
else cout<<"Sad";
return 0;
}