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
'백준 > C++' 카테고리의 다른 글
[C++] 백준 2164번 - 카드 2 (0) | 2024.06.19 |
---|---|
[C++] 백준 18258번 - 큐 2 (1) | 2024.06.17 |
[C++] 백준 28278번 - 스택 2 (0) | 2024.06.16 |
[C++] 백준 11478번 - 서로 다른 부분 문자열의 개수 (0) | 2024.06.14 |
[C++] 백준 7785번 - 회사에 있는 사람 (1) | 2024.06.13 |