본문 바로가기
BaekJoon/C++

1874 : 스택 수열 (C)

by GrayChoi 2021. 1. 10.
반응형

 

1874번: 스택 수열

1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.

www.acmicpc.net


#include<stdio.h>
#include<string.h>
#define MAX_SIZE 200001

char result[MAX_SIZE];
int indexd = 0;

void push(int *stack, int data, int *topp) {
    stack[(*topp)++] = data;
    result[indexd++] = '+';
}

void pop(int *stack, int *topp) {
    stack[(*topp)--];
    result[indexd++] = '-';
}

int main() {
    int N;
    scanf("%d", &N);

    int stack[N];
    int top = 0;
    int *topp = &top;

    int size = 0;

    for(int i = 0; i < N; i++) {
        int s;
        scanf("%d", &s);
        if(size < s) {
            while(size != s) {
                push(stack, ++size, topp);
            }
            pop(stack, topp);
        } else if(stack[top - 1] == s) {
            pop(stack, topp);
        } else {
            result[0] = 'x';
        }
    }

    if(result[0] == 'x') {
        printf("NO");
    } else {
        int i = 0;
        while(result[i] != NULL) {
            if (result[i + 1] == NULL) {
                printf("%c", result[i++]);
            } else {
                printf("%c\n", result[i++]);
            }
        }
    }

    return 0;
}

풀다가 수정하다 풀다가 수정하다 하면서

코드가 많이 지저분해졌다.

 

그래도 어느정도 잘 해결했다.

 

 

 

 

 

 

 

 

 

 

 

반응형

'BaekJoon > C++' 카테고리의 다른 글

2751 : 수 정렬하기 2 (C)  (0) 2021.01.11
2750 : 수 정렬하기 (C)  (0) 2021.01.11
11866 : 요세푸스 문제 (C)  (0) 2021.01.10
10845 : 큐 (C)  (0) 2021.01.10
9012 : 괄호 (C)  (0) 2021.01.09

댓글