[JAVA 문제 풀이] 397. 우박수열 정적분

프로그래머스 (134239)
Stupefyee's avatar
Jul 24, 2025
[JAVA 문제 풀이] 397. 우박수열 정적분
notion image
notion image
 

내가 작성한 코드

import java.util.*; class Solution { public double[] solution(int k, int[][] ranges) { double[] answer = new double[ranges.length]; List<Integer> list = new ArrayList<>(); // 우박수열 // 우박수열 리스트 채우기 list.add(k); while (k != 1) { if (k % 2 == 0) { k /= 2; list.add(k); } else { k = k * 3 + 1; list.add(k); } } // 각 구간별 면적 구하기 int n = list.size(); double[] areaSum = new double[n]; // 누적합 for (int i = 0; i < n - 1; i++) { double area = (list.get(i) + list.get(i + 1)) / 2.0; areaSum[i + 1] = areaSum[i] + area; } // ranges의 구간 면적 계산 for (int i = 0; i < ranges.length; i++) { int a = ranges[i][0]; int b = ranges[i][1]; int end = n - 1 + b; // x좌표: 0 ~ n-1 if (a > end) { answer[i] = -1.0; } else { answer[i] = areaSum[end] - areaSum[a]; } } return answer; } }
Share article

stupefyee