알고리즘/백준
백준 6198번 옥상 정원 꾸미기 (JAVA)
왕구스
2021. 8. 1. 19:48
https://www.acmicpc.net/problem/6198
6198번: 옥상 정원 꾸미기
문제 도시에는 N개의 빌딩이 있다. 빌딩 관리인들은 매우 성실 하기 때문에, 다른 빌딩의 옥상 정원을 벤치마킹 하고 싶어한다. i번째 빌딩의 키가 hi이고, 모든 빌딩은 일렬로 서 있고 오른쪽으
www.acmicpc.net
스택을 사용하여 풀 수 있는 문제였다. 비슷한 문제의 난이도 상위 버전으로 히스토그램이 있으니, 풀어보는 것을 추천한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.function.Function;
public class Main {
static Function<String, Integer> stoi = Integer::parseInt;
static int N;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = stoi.apply(br.readLine());
long result = 0;
int tmp;
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < N; i++) {
tmp = stoi.apply(br.readLine());
while (!stack.isEmpty() && stack.peek() <= tmp) {
stack.pop();
}
result += stack.size();
stack.add(tmp);
}
System.out.println(result);
}
}