728x90
문제
https://www.acmicpc.net/problem/22945
접근 방법
- 시작점과 끝 지점에 s , e 포인터를 두고 능력치가 누가 더 작은지 확인한다.(곱하는 값이 최대)
- arr[s]가 더 작다면 e를 줄여봤자 min값은 arr[s] 가 될 것이다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private static StringBuilder sb;
private static BufferedReader br;
private static StringTokenizer st;
private static int N;
private static int[] arr;
private static int max = Integer.MIN_VALUE;
//입력
public static void input() throws Exception {
br = new BufferedReader(new InputStreamReader(System.in));
sb = new StringBuilder();
N = Integer.parseInt(br.readLine());
arr = new int[N];
st = new StringTokenizer(br.readLine());
for(int i = 0 ; i < N ; i++){
arr[i] = Integer.parseInt(st.nextToken());
}
}
//실행
public static void process() {
int s = 0;
int e = N-1;
while(s<e){
int p = e-s-1;
int answer = p*Math.min(arr[s],arr[e]);
max = Math.max(max,answer);
if(arr[s]<arr[e]){
s++;
}else{
e--;
}
}
System.out.println(max);
}
public static void main(String[] args) throws Exception {
input();
process();
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[Java] 백준 23032번 : 서프라이즈~ (0) | 2024.05.28 |
---|---|
[Java] 백준 15961번 : 회전 초밥 (0) | 2024.05.28 |
[Java] 백준 1806번 : 부분합 (0) | 2024.05.27 |
[Java] 백준 15831번 : 준표의 조약돌 (0) | 2024.05.27 |
[Java] 백준 16472번 : 고냥이 (0) | 2024.05.27 |