BOJ/Etc
[BOJ] 1725 히스토그램
J_Jayce
2021. 3. 5. 11:33
문제
1725번: 히스토그램
첫 행에는 N (1 ≤ N ≤ 100,000) 이 주어진다. N은 히스토그램의 가로 칸의 수이다. 다음 N 행에 걸쳐 각 칸의 높이가 왼쪽에서부터 차례대로 주어진다. 각 칸의 높이는 1,000,000,000보다 작거나 같은
www.acmicpc.net
풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
static int N, result;
static int[] heights;
static Stack<Integer> stack;
public static void main(String[] args) throws IOException {
//선언 및 입력
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
N = Integer.parseInt(br.readLine());
heights = new int[N+2];
stack = new Stack<Integer>();
for(int i=1;i<=N;i++)
heights[i] = Integer.parseInt(br.readLine());
//계산
stack.push(0);
for(int i=1;i<=N+1;i++) {
while(!stack.isEmpty() && heights[stack.peek()] > heights[i]) {
int tmp_idx = stack.pop();
result = Math.max(result, heights[tmp_idx]*(i-stack.peek()-1));
}
stack.push(i);
}
System.out.println(result);
}
}