[백준] 1864 스카이라인 쉬운거

문제링크 : https://www.acmicpc.net/problem/1863

 

1863번: 스카이라인 쉬운거

첫째 줄에 n이 주어진다. (1 ≤ n ≤ 50,000) 다음 n개의 줄에는 왼쪽부터 스카이라인을 보아 갈 때 스카이라인의 고도가 바뀌는 지점의 좌표 x와 y가 주어진다. (1 ≤ x ≤ 1,000,000. 0 ≤ y ≤ 500,000) 첫

www.acmicpc.net

 

import java.io.*;
import java.util.*;

public class BJ1863HJ {
    static int n, ans;
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        n = Integer.parseInt(br.readLine());
        Stack<Integer> arr = new Stack<>();
        for (int i=0; i<n; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());
            int x = Integer.parseInt(st.nextToken());
            int high = Integer.parseInt(st.nextToken());
            if (!arr.isEmpty()){
                if (arr.get(arr.size() - 1) < high){
                    arr.push(high);
                } else if (arr.get(arr.size()-1) > high) {
                    while (!arr.isEmpty() && arr.get(arr.size()-1)>high){
                        arr.pop();
                        ans ++;
                    }
                    if (arr.isEmpty()){
                        if (high>0){
                            arr.push(high);
                        }
                    }else {
                        if (arr.get(arr.size()-1) < high){
                            arr.push(high);
                        }
                    }
                }
            }else {
                if (high>0){
                    arr.push(high);
                }
            }
        }
        System.out.println(ans + arr.size());
    }
}

 

'Algorithm > Java' 카테고리의 다른 글

[백준] 8979 올림픽  (0) 2024.04.11
[백준] 14719 빗물  (1) 2024.04.10
[백준] 2146 다리 만들기  (0) 2024.03.25
[백준] 14658 하늘에서 별똥별이 빗발친다  (0) 2024.03.14
[백준] 19941 햄버거 분배  (0) 2024.03.11