#include<stdio.h>
#include<stdlib.h>
int main(){
int N;
scanf("%d", &N);
int* stack;
stack = (int*)malloc(sizeof(int)*(N+1));
int tmp;
char* order;
order = (char*)malloc(sizeof(char)*(2*N));
int top = 0;
int nxt = 1;
int ord=0;
for(int i=0;i<N+1;i++)
stack[i] = 0;
for(int i=1;i<N+1;i++){
scanf("%d", &tmp);
if(stack[top]>tmp){ // 못만듦
printf("NO");
return 0;
}
else if(stack[top]<tmp){
while(stack[top]!=tmp){
if(nxt>N){
printf("NO");
return 0;
}
stack[++top] = nxt++; //push
order[ord++] = '+';
}
if(stack[top]==tmp){
stack[top--] = 0; //pop
order[ord++] = '-';
}
}
else{
stack[top--] = 0; //pop
order[ord++] = '-';
}
}
for(int i=0;i<ord;i++)
printf("%c\n", order[i]);
free(stack);
free(order);
return 0;
}
///////////////
첫 시도때 runtime error integer overflow가 나왔다
integer의 범위에서 벗어날때 이러한 에러가 발생하는데, 나의 경우에는 배열의 값을 초기화하지 않고
비교를 실행하여 발생하였다.
배열 선언후 초기화 시켜주면 이러한 에러를 고칠 수 있다.
'프로그래밍 > C' 카테고리의 다른 글
baekjoon 2805 w/ binary Search (0) | 2022.01.15 |
---|---|
baekjoon 2108 & float와 double형의 차이 (0) | 2022.01.12 |
baekjoon 1920 w/ binary search & merge sort (0) | 2022.01.11 |
baekjoon 2751 w/ merge sort (0) | 2022.01.11 |
baekjoon 1654 w/ binary search (0) | 2022.01.10 |