https://www.acmicpc.net/problem/12789
분기를 잘 설계하는 것도 능력이다
stack을 제대로 고려안해서 for문으로 무지성으로 돌리다가 된통 혼났다.
while문으로 stack은 flush 해줍시다.
#include<iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <string>
#include <map>
#include <limits.h>
#include <queue>
#include <set>
#include <math.h>
#include <stack>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
int arr[1001] = { 0 };
stack<int> stk;
int cur_value = 1; // 현재 간식을 받아야 하는 번호
cin >> n;
for (int i = 0; i < n; i++) {
cin >> arr[i]; // 배열 입력
}
for (int i = 0; i < n; i++) {
// 현재 번호가 순서와 맞다면 바로 간식을 받음
if (arr[i] == cur_value) {
cur_value++;
}
else {
// 스택이 비어있지 않으며 스택 맨 위가 순서에 맞는 경우 처리
while (!stk.empty() && stk.top() == cur_value) {
stk.pop();
cur_value++;
}
// 현재 번호를 스택에 삽입
stk.push(arr[i]);
}
}
// 남은 스택 처리
while (!stk.empty()) {
if (stk.top() == cur_value) {
stk.pop();
cur_value++;
}
else {
break; // 순서가 맞지 않으면 즉시 종료
}
}
// 모든 간식을 순서대로 받을 수 있었는지 확인
if (stk.empty())
cout << "Nice\n";
else
cout << "Sad\n";
return 0;
}
'PS > BOJ' 카테고리의 다른 글
[백준] 3018. 캠프파이어(c++) (0) | 2024.12.25 |
---|---|
[백준] 1246. 온라인 판매(c++) (0) | 2024.12.24 |
[백준] 18111. 마인크래프트(c++) (0) | 2024.12.19 |
[백준] 30804. 과일 탕후루(c++) (0) | 2024.12.18 |
[백준] 21736. 헌내기는 친구가 필요해(c++) (1) | 2024.12.16 |