이 조건들을 고려해 Stack
을 활용하여 접근하면 쉽게 풀 수 있다.
import java.io.*;
import java.util.Stack;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static Stack<Integer> stack = new Stack<>();
static int temp;
static long count;
public static void main(String[] args) throws IOException {
int N = Integer.parseInt(br.readLine());
for (int i = 0; i < N; i++) {
temp = Integer.parseInt(br.readLine());
while (!stack.isEmpty() && stack.peek() <= temp) stack.pop();
count += stack.size();
stack.push(temp);
}
System.out.println(count);
}
}
push
하기 전엔 앞서 삽입된 빌딩의 높이와 매번 비교해야 함.PS 초보인 내 입장에선 스택이 PS에서 어떤식으로 쓰이는지 늘 궁금했었는데 이번 문제를 통해 조금이나마 정리를 하고있다.
// 바킹독님 감사해요...ㅎㅎ