[programmers] [PCCP 기출문제] 2번 / 퍼즐 게임 챌린지

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

회고) 덜렁이..변수좀 잘 보자..

import java.util.*;

class Solution {
    public int solution(int[] diffs, int[] times, long limit) {
        int left = diffs[0], level = 0, answer = 0;
        int right = Arrays.stream(diffs).max().getAsInt();

        while(left <= right){
            level = (left + right)/2;
            if(search(level, diffs, times) > limit){
                left = level+1;
            }else{
                right = level-1;
                answer = level;
            }
        }

        return answer;
    }

    private long search(int level, int[] diffs, int[] times){
        long result = 0;
        for(int i = 0 ; i < diffs.length ; i++){
            int temp = diffs[i] - level;

            if(temp > 0){
                result += (long) (times[i-1] + times[i]) * temp + times[i];
            }else{
                result += times[i];
            }
        }
        return result;
    }
}

© 2023 Lee. All rights reserved.