시간&메모리 제한
문제
입력&출력
문제풀이
package com.jungol;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class jungol_1214 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
long[] H = new long[N+2];
for (int i = 1; i < N+1; i++) {
H[i]=Integer.parseInt(st.nextToken());
}
Long R, L,ans=(long) 0;
for (int i = 1; i < N+1; i++) {
R=(long) 0;
L=(long) 0;
//오른쪽 비교
for (int j = i+1; j < H.length; j++) {
if(H[i]>H[j]) {
R=H[i] *(j-i);
break;
}
}
//왼쪽
for (int j = i-1; j > 0; j--) {
if(H[i]>H[j]) {
L=H[i]*(i-1-j);
break;
}
}
ans = Math.max(ans, R+L);
}
System.out.println(ans);
}
}
- 히스토그램은 가장 넓은 사각형의 크기를 구하는 문제입니다.
- 이 문제에 대한 해결 아이디어는 칸을 오른쪽으로 한칸씩 옮겨 가면서 다 확인하는 방법입니다.
- 이동했을때 그 칸에 해당하는 칸보다 좌 우 의 칸들이 더 작으면 크기를 더해줍니다.
- 오른쪽, 왼쪽의 크기를 더했을 때, 맥스 값을 구해주면 됩니다.
'Algorithm > 정올 알고리즘' 카테고리의 다른 글
정올_1370 회의실 배정(자바) / 탐욕 알고리즘 (0) | 2021.06.30 |
---|---|
정올_2811 소수와 합성수(자바) / 수학2 (0) | 2021.06.29 |
정올_1009 각 자리 수의 역과 합(자바) / 수학2 (0) | 2021.06.28 |
정올_1002 최대공약수, 최소공배수(자바) / 수학1 (0) | 2021.06.27 |
정올_1658 최대 공약수와 최소 공배수(자바) / 수학1 (0) | 2021.06.26 |