백준/C++
[C++] 백준 12789번 - 도키도키 간식드리미
꿩꿩
2024. 6. 17. 00:03
728x90
문제 12789번
https://www.acmicpc.net/problem/12789
입력된 값을 확인하여 해당 순서라면 그냥 보내주고 다음 순서로 넘어간다. 만약 아니라면 해당 입력값을 스택에 저장해준다. 그리고 스택이 비어있지 않고 맨 위가 해당 순서라면 스택에서 제거해주고 다음 순서로 넘어간다. 학생 수만큼 반복해주고 스택이 비어있으면 Nice를, 아니면 Sad를 출력한다.
#include <iostream>
#include <stack>
using namespace std;
int main() {
int n, count = 1;
stack <int> st;
cin >> n;
while (n--) {
int input;
cin >> input;
if (count == input) { //입력된 값이 해당 순서이면 다음 순서로 넘어가기
count++;
}
else {
st.push(input); //아니면 스택에 저장
}
while (!st.empty() && st.top() == count) { // 스택이 비어있지 않고 맨 위의 수가 다음 순서이면 계속 반복
st.pop();
count++;
}
}
if (st.empty()) {
cout << "Nice";
}
else {
cout << "Sad";
}
return 0;
}
728x90