[BOJ 1874] 스택 수열 (java)

less than 1 minute read

:pencil2: 문제 링크 https://www.acmicpc.net/problem/1874 :pencil2:

문제 풀이

package basics_200;

import java.io.IOException;
import java.util.Scanner;
import java.util.Stack;

public class BOJ1874 {

	public static void main(String[] args) throws IOException {

		Stack<Integer> stack = new Stack<Integer>();
		Scanner sc = new Scanner(System.in);
		StringBuilder sb = new StringBuilder();

		// size 입력
		int size = sc.nextInt();
		sc.nextLine();

		//입력한 수열 저장
		int[] list = new int[size];

		for (int i = 0; i < size; i++) {
			list[i] = sc.nextInt();
		}
		sc.nextLine();

		//수열 순회할 때 사용할 인덱스
		int i = 0;

		// size 만큼 반복
		for (int j = 1; j <= size; j++) {
			//1부터 추가 
			stack.push(j);
			sb.append("+");
			sb.append("\n");

			//stack으로 수열의 해당하는 값을 만들었다면 
			while (stack.peek() == list[i]) {
				//만들어진 마지막 수를 빼줘야하기때문
				stack.pop();
				sb.append('-');
				sb.append("\n");
				//다음 수열 만들기 위해서 
				i++;
				//수열 다 만들었다면 
				if(stack.isEmpty())
					break;
			}

		}
		
		//스택이 전부 비어있으면 스택수열 만들 수 있음 
		if(stack.isEmpty())
            System.out.println(sb);
        else
            System.out.println("NO");

	}

}

Comments