[문제]
https://school.programmers.co.kr/learn/courses/30/lessons/134239
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[풀이]
단순 구현. 모든 x좌표에 대해서 우박수열의 꺾은 선 그래프에 의해 생기는 사다리꼴의 넓이를 구해서 저장해 준 후 사용하였다.
[코드]
import java.util.*;
class Solution {
public double[] solution(int k, int[][] ranges) {
double[] answer = {};
//정적분의 결과 목록을 return
List<Integer> list = new ArrayList<>();
list.add(k);
while(k>1){
if(k%2==1){
k = k*3 + 1;
list.add(k);
}
else{
k /= 2;
list.add(k);
}
}
//너비 구하기
List<Double> area = new ArrayList<>();
for(int i=0; i<list.size()-1; i++){
double a = (list.get(i) + list.get(i+1))/2.0;
area.add(a);
}
int idx = 0;
answer = new double[ranges.length];
for(int[] r:ranges){
int x1 = r[0];
int x2 = list.size()-1 + r[1];
if(x1>x2){
answer[idx++] = -1;
continue;
}
double sum = 0;
for(int i=x1; i<x2; i++){
sum += area.get(i);
}
answer[idx++] = sum;
}
return answer;
}
}
'알고리즘 공부 및 문제 풀이 > 프로그래머스(PRO)' 카테고리의 다른 글
[pro] 프로그래머스 level2 131704 택배 상자 (Java) - 시뮬레이션 (0) | 2023.03.07 |
---|---|
[pro] 프로그래머스 level2 131127 할인 행사 (Java) - 시뮬레이션 (0) | 2023.03.06 |
[pro] 프로그래머스 level2 132265 롤케이크 자르기 (Java) - 시뮬레이션 (0) | 2023.03.03 |
[pro] 프로그래머스 level2 135807 숫자 카드 나누기 (Java) - 시뮬레이션 (0) | 2023.03.03 |
[pro] 프로그래머스 level2 140107 점 찍기 (Java) - 시뮬레이션 (0) | 2023.03.03 |