[BOJ 1863] 스카이라인 쉬운거

 

1. 문제 : https://www.acmicpc.net/problem/1863

 

2. 풀이

스택의 peek보다 현재 값이 크면 스택에 넣어주고

스택의 peek보다 현재 값이 작은 경우 하나씩 꺼내면서 더해준다

이때 값이 같은 경우 나중에 어차피 꺼낼 거기 때문에 continue한다

 

3. 코드

package baekjoon;

import java.util.Scanner;
import java.util.Stack;

public class 스카이라인쉬운거 {

    static int N, x, y;
    public static void main(String[] args) throws Exception{
        Scanner sc = new Scanner(System.in);

        N = sc.nextInt();
        int[] arr = new int[50002];
        int answer = 0;

        for(int i = 0; i < N; i++){
            x = sc.nextInt();
            y = sc.nextInt();
            arr[i] = y;
        }

        int cur;

        Stack<Integer> stk = new Stack<Integer>();
        for(int i = 0; i <= N; i++){
            cur = arr[i];

            while(!stk.empty() && stk.peek() > cur){
                answer += 1;
                stk.pop();
            }

            if(!stk.empty() && stk.peek() == cur)
                continue;

            stk.push(cur);
        }

        System.out.println(answer);
    }
}
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기