[ 다먹살 ]/- Coding

[프로그래머스] 레벨2 우박수열 정적분

엉망으로살기 2023. 3. 2. 17:31
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/134239

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

사실 이 문제를 풀면서 사다리꼴의 넓이를 어떻게 구하는 지 까먹어서 공식을 구글링했다. 정적분이라는 단어가 어려워보여서 그렇지 결국 그냥 점과 점 사이를 이은 선분을 기준으로 아래의 영역 넓이를 전부 구하는 것이다.

전체적인 문제 난이도는 그렇게 어렵진 않았으며, 문제를 풀고나서 생각해보니 이중 반복문을 쓰지말고 계속해서 누적합을 구하는 방식으로 풀어도 됐을 것 같다. 


문제 및 입출력


제한사항 및 입출력 예제


코드

import java.util.ArrayList;

class Solution
{
    public double[] solution(int k, int[][] ranges)
    {
        double[] answer = new double[ranges.length];
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(k);
        
        while(k!=1)
        {
            if(k%2==0)
            {
                k /= 2;
            }
            else
            {
                k *= 3;
                k++;
            }
            
            list.add(k);
        }
        
        double[] calc = new double[list.size()-1];
        
        for(int i=0; i<list.size()-1; i++)
        {
            calc[i] = (double)(list.get(i)+list.get(i+1))/2;
        }
        for(int i=0; i<ranges.length; i++)
        {
            double result = 0;
            int s = ranges[i][0];
            int e = list.size()+ranges[i][1]-1;
            
            if(s>e)
            {
                answer[i] = -1;
            }
            else
            {
                for(int j=s; j<e; j++)
                {
                    result += calc[j];
                }
                
                answer[i] = result;
            }
        }
        
        return answer;
    }
}

반응형