728x90
https://www.acmicpc.net/problem/1874
문제 설명
문제 풀이
#include<stdio.h>
#include<stdlib.h>
#include<vector>
#include<algorithm>
using namespace std;
vector <char> answer;
int stack[100001], num[100001], chk[100001];
int main()
{
int i, n, key = -1, cnt = 1, stop = 0;
scanf("%d", &n);
for(i = 1; i <= n; i++) {
scanf("%d", &num[i]);
}
i = 1;
while(cnt <= n) {
if(key == -1 || stack[key] < num[cnt]) {
answer.push_back('+');
stack[++key] = i++;
}
else {
if(stack[key] == num[cnt]) {
cnt++;
chk[stack[key]]++;
}
answer.push_back('-');
if(chk[stack[key]] == 0) {
printf("NO");
exit(0);
}
key--;
}
}
for(i = 0; i < answer.size(); i++) {
printf("%c\n", answer[i]);
}
return 0;
}
처음에는 while문을 돌면서 한 줄씩 출력을 뽑으려고 했는데 수열이 성립하지 않을 경우를 while문 이전에 거를 수가 없을 것 같아서 생각을 바꿨다.
'코테 > 백준' 카테고리의 다른 글
[백준] 1149 RGB거리 - C++ (0) | 2023.07.29 |
---|---|
[백준] 11659 구간 합 구하기 4 - C++ (0) | 2023.07.29 |
[백준] 10773 제로 - C++ (0) | 2023.07.29 |
[백준] 2606 바이러스 - C++ (0) | 2023.07.28 |
[백준] 9461 파도반 수열 - C++ (0) | 2023.07.28 |