Machineboy空

백준 1874번: 스택 수열 - Stack pop(), push() 본문

카테고리 없음

백준 1874번: 스택 수열 - Stack pop(), push()

안녕도라 2023. 10. 18. 16:41

//런타임 에러
//시간복잡도: n2^


using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;

namespace CodingTestForBaekJoon
{
    
    
    class Program
    {
        static void Main(string[] args)
        {

            int N = int.Parse(Console.ReadLine());
            List<int> A = new List<int>();

            int[] origin = new int[N];
            int[] madeStack = new int[N];

            for (int i = 1; i <= N; i++)
            {
                origin[i-1] = i;
                madeStack[i-1] = int.Parse(Console.ReadLine());
            }


            for (int i = 0; i <= N; i++)
            {
                Console.WriteLine("+");

                for (int j = 0; j <= N; j++) 
                { 
                    if (madeStack[i] == origin[j])
                    {
                        A.Add(origin[j]);
                        Console.WriteLine("-");
                        break;
                    }                
                }
            }
        }
    }
}
N = int(input())
A = [0]*N

for i in range(N):
    A[i] = int(input())

stack = []
num = 1
result = True
answer = ""

for i in range(N):
    su = A[i]
    if su >= num:
        while su >= num:
            stack.append(num)
            num += 1
            answer += "+\n"
        stack.pop()
        answer += "-\n"
    else:
        n = stack.pop()
        if n > su:
            print("NO")
            result = False
            break
        else:
            answer += "-\n"

if result:
    print(answer)