728x90
- 연속 부분 수열 중 가장 긴 바이토닉 수열의 길이 반환
(입력)
[1, 2, 1, 2, 3, 2, 1]
[1, 3, 2, 5, 7, 4, 2, 5, 1]
(출력)
# ArrayList, Math.max 사용
import java.util.ArrayList;
public class Main {
private int solution(int[] nums) {
int result = 0;
int n = nums.length;
ArrayList<Integer> peaks = new ArrayList<>();
for(int i=1; i<n-1; i++) {
if(nums[i-1] < nums[i] && nums[i] > nums[i+1])
peaks.add(i);
}
for(int p : peaks) {
int lt = p;
int rt = p;
int cnt = 1;
while(lt-1 >= 0 && nums[lt-1] < nums[lt]) {
lt--;
cnt++;
}
while(rt+1 < n && nums[rt] > nums[rt+1]) {
rt++;
cnt++;
}
result = Math.max(result, cnt);
}
return result;
}
public static void main(String[] args) {
Main T = new Main();
int[] nums = new int[]{1, 2, 1, 2, 3, 2, 1};
int[] nums2 = new int[]{1, 3, 2, 5, 7, 4, 2, 5, 1};
System.out.println(T.solution(nums)); // 5
System.out.println(T.solution(nums2)); // 5
}
}
반응형
'전.java' 카테고리의 다른 글
[Java] 문자열 압축 (0) | 2024.04.07 |
---|---|
[Java] 수열의 경우수 (0) | 2023.02.01 |
[Java] 바이토닉 수열 (0) | 2023.01.31 |
[Java] 가장 높은 증가수열 (0) | 2023.01.31 |
[Java] 제곱수 정렬 (0) | 2023.01.31 |