/////////
Search
🎏

스택 수열

package algoStudy.week2; import java.util.Scanner; import java.util.Stack; //백준 스택 수열 // https://www.acmicpc.net/problem/1874 public class BaekJoon1874 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); StringBuilder sb = new StringBuilder(); int N = sc.nextInt(); int topTmp=0; Stack<Integer> stack = new Stack<>(); stack.push(0); //스택에는 1부터 들어가야하므로 0을 넣어줌 for(int i=0;i<N;i++){ // int next = sc.nextInt(); while(!stack.empty()&&stack.peek()<N){ //스택이 비었거나 숫자가 N을 넘어가면 멈춤 if(stack.peek()>next){ //현재 제일 위의 수가 수열의 수보다 크면 stack.pop(); //수열의 수로 맞춰주기위해 pop(수를 낮춰야함) sb.append('-') .append('\n'); } else if(stack.peek()<next) { stack.push(topTmp + 1); topTmp++; sb.append('+') .append('\n'); } else break; //같으면 break; } if(stack.empty()||next!=stack.peek()) { //같아서 break되거나 while문 조건에서 break되는데 같지 않은 경우 System.out.println("NO"); return; } stack.pop(); sb.append('-') .append('\n'); } System.out.println(sb); } }
Java
복사