https://www.acmicpc.net/problem/12789
1. 문제풀이
대기줄에서 한 명씩만 설 수 있는 공간을 거쳐서 간식을 받을 수 있는 방법으로 구현하였다. 모든 사람들이 처음에 대기열에서 다른 대기 공간으로 간다. 다른 공간을 스택으로 구현하여, 순번에 맞는 사람이 대기열에 존재할 때까지 다른 공간에 일렬로 서게 된다. 해당 스택의 마지막으로 들어온 사람의 값이 간식을 받을 차례가 아닌 경우 문제 조건에 어긋나므로 Sad를 출력하고 종료하고, 반복문을 정상적으로 수행할 경우 Nice를 출력한다.
2. C++ 코드
#include <iostream>
#include <stack>
#include <stdio.h>
using namespace std;
int arr[1001];
int main(void)
{
int n, num = 1, cnt = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
stack<int> s;
for (int i = 0; i < n; i++) {
if (s.empty() && cnt < n) {
s.push(arr[cnt++]);
}
while (s.top() != num && cnt < n) {
s.push(arr[cnt++]);
}
if (!s.empty() && s.top() == num) {
s.pop();
num++;
} else {
printf("Sad\n");
return 0;
}
}
printf("Nice\n");
return 0;
}
'Koala - 11기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/python3] 15663번 : N과 M (9) (0) | 2023.08.13 |
---|---|
[백준/Python] 3190번 : 뱀 (0) | 2023.08.13 |
[백준/Python] 2346번: 풍선 터뜨리기 (0) | 2023.08.13 |
[백준/Java] 17298 오큰수 (0) | 2023.08.13 |
[백준/C++] 11866번: 요세푸스 문제 0 (0) | 2023.08.12 |