Old/Algorithms

[JAVA] 백준 17608번 : 막대기(한국정보올림피아드/KOI 2019 1차대회/초등부)

유뱅유뱅뱅 2020. 9. 21. 12:30

www.acmicpc.net/problem/17608

문제

해결 방안

뒤에서부터 확인을 하므로 Stack을 이용하여 구현하였다.

기준 막대기높이(standard)보다 비교하는 막대기높이(current)가 크면 갯수를 하나씩 늘려주고 standard를 current로 바꿔준다.

 

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;

// 막대기
public class Main {

	public static void main(String[] args) throws IOException {

		Stack<Integer> stack = new Stack<>();
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str = br.readLine();
		int n = Integer.parseInt(str);
		
		int h=0;
		for(int i=0; i<n; i++) {
			str = br.readLine();
			h = Integer.parseInt(str);
			stack.push(h);
		}
		// ==== 입력 끝
		
		int standard = stack.pop();
		int cnt = 1;
		int current = 0;
		while(!stack.isEmpty()) {
			current = stack.pop();
			if(current > standard) {
				standard = current;
				cnt++;
			}
		}
		
		System.out.println(cnt);
	}

}