1874

#include <stdio.h>

int main(void){
    // 테스트 케이스 입력
    int test_case = 0;
    scanf("%d", &test_case);

    int stack[100000] = {0};
    char print[200000] = {0};
    int max = 0, s_index = 0, p_index = 0, is_impossible=0;
    for(int i = 0; i < test_case; i++){
        // 수열 정수 입력
        int num = 0;
        scanf("%d", &num);

        // push 
        for(int j = max+1; j <= num; j++){
            print[p_index++] = '+';
            stack[s_index++] = j;
        }

        // pop
        int is_impossible_f = 1;
        for(int j = s_index-1; j >= 0; j--){
            print[p_index++] = '-';
            s_index--;
            if(stack[j] == num){
                is_impossible_f = 0;
                break;
            }
        }

        // 불가능한 경우 break;
        if(is_impossible_f){
            is_impossible = is_impossible_f;
            break;
        }
        
        // max 갱신
        if(max < num){
            max = num;
        }
    }

    // 출력
    if(is_impossible){
        printf("NO");
    }
    else{
        for(int i = 0; i < p_index; i++){
            printf("%c\n", print[i]);
        }
    }
    return 0;
}

 

 

코드가 좀 맘에 안들긴하넹... 맞긴했는데 좀 더 좋은 코드가 있을까? 생각하는 코드임!

+ Recent posts