티스토리 뷰

PS/boj

boj)1874 - 스택 수열

kingsubin 2020. 9. 13. 23:41
import java.io.*;
import java.util.Stack;

public class boj_1874 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        Stack<Integer> s = new Stack<>();

        int n = Integer.parseInt(br.readLine()); // 1 ~ 100,000

        int item = 0; // 스택에 오름차순으로 쌓일 수
        while (n-- > 0) {
            int x = Integer.parseInt(br.readLine());

            if (x > item) { // 입력받은수가 더 크면 
                while (item < x) { // x까지 넣은후에 
                    s.push(++item);
                    sb.append("+\n");
                }
                s.pop(); // 출력 
                sb.append("-\n");
            } else { // x가 item과 같거나 작을경우 
                boolean found = false;
                if (!s.isEmpty()) { // 스택이 비지 않았다면
                    int top = s.peek();
                    s.pop();
                    sb.append("-\n");

                    if (x == top) { 
                        found = true;
                    }
                }

                if (!found) { // 스택의 상단값이 x보다 크면 불가능
                    System.out.println("NO");
                    return;
                }
            }
        }

        System.out.println(sb.toString());
    }
}

- 실패

- 돌대가리가 틀림없다는 생각만 든다.

 

'PS > boj' 카테고리의 다른 글

boj)1158 - 요세푸스 문제  (0) 2020.09.14
boj)1406 - 에디터  (0) 2020.09.14
boj)9012 - 괄호  (0) 2020.09.13
boj)9093 - 단어 뒤집기  (0) 2020.09.13
boj)10828 - 스택구현  (0) 2020.09.13