[BOJ 1874] 스택 수열 (java)
문제 링크 https://www.acmicpc.net/problem/1874
문제 풀이
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