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
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기