Stack - 백준1874 스택 수열

이형석·2024년 1월 25일

알고리즘 Phase1

목록 보기
5/59

예를들어, 첫번째 입력값이 4 -> push,push,push,push,pop
두번째 입력값이 3 -> pop
세번째 입력값이 6 -> push, push, pop
네번째 입력값이 8 -> push, push, pop
다섯번째 입력값이 7 -> pop
여섯번째 입력값이 5 -> pop
이런식으로 작성
+그 다음 값을 찾을 방법 존재하지 않는 경우 : NO출력

  1. n번반복
  2. number < input 이면
    while(number == input) number++, push(number)
  3. if(stack.isEmpty()) 이면 NO
  4. if(stack.peek() != input) 이면 NO
  5. 3, 4 이상 없으면 stack.pop();
import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        boolean b = true;

        int last = 1;
        StringBuilder sb = new StringBuilder();
        Stack<Integer> stack = new Stack<>();
        for (int i = 0; i < n; i++) {
            int input = Integer.parseInt(br.readLine());

            while (last <= input) {
                stack.push(last);
                sb.append("+\n");
                last++;
            }
            if (stack.isEmpty()) {
                System.out.println(2);
                System.out.println("NO");
                b = false;
                break;
            }
            int pop = stack.pop();
            if (pop == input) {
                sb.append("-\n");
            }else {
                System.out.println("NO");
                b = false;
                break;
            }
        }
        if (b == true) {
            System.out.println(sb);
        }
    }
}
  • 풀이 단순하게 생각하기
profile
금융IT 개발자

0개의 댓글