728x90

- 바이토닉 수열의 개수 반환

 

(입력)

1, 3, 2, 5, 7, 4, 2, 5, 1

 

(출력)

 

 

# ArrayList 사용

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 lcnt = 0;
            int rcnt = 0;

            while(lt-1 >= 0 && nums[lt-1] < nums[lt]) {
                lt--;
                lcnt++;
            }
            while(rt+1 < n && nums[rt] > nums[rt+1]) {
                rt++;
                rcnt++;
            }
            result += (lcnt*rcnt);
        }

        return result;
    }

    public static void main(String[] args) {
        Main T = new Main();
        int[] nums = new int[]{1, 3, 2, 5, 7, 4, 2, 5, 1};
        System.out.println(T.solution(nums)); // 6
    }
}
반응형

'전.java' 카테고리의 다른 글

[Java] 회문 문자열  (0) 2024.04.07
[Java] 문자열 압축  (0) 2024.04.07
[Java] 최대 길이 바이토닉  (0) 2023.02.01
[Java] 바이토닉 수열  (0) 2023.01.31
[Java] 가장 높은 증가수열  (0) 2023.01.31
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기