본문 바로가기

코딩테스트/백준

[백준-자바] 17608번 막대기 / 2022.05.24

 

https://www.acmicpc.net/problem/17608

 

17608번: 막대기

아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로

www.acmicpc.net

 

 

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

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        Stack<Integer> stick = new Stack<>(); // 스택으로 선언
        for(int i=0; i<N; i++){ // 막대기 높이 push
            stick.push(sc.nextInt());
        }
        int first = stick.pop(); // 맨 마지막에 넣은 막대기 높이
        int look = 1; // 한 개는 무조건 보임
        while(!stick.isEmpty()){ // 스택이 빌 때까지 반복
            int second = stick.pop(); // 앞 의 막대기보다 뒤의 막대기의
            if(second>first) { // 높이가 더 높다면 보이는 막대기 하나 추가가              
            	first = second;
                look++;
            }
        }
        System.out.println(look);
    }
}