[programmers] [PCCP ๊ธฐ์ถœ๋ฌธ์ œ] 2๋ฒˆ / ํผ์ฆ ๊ฒŒ์ž„ ์ฑŒ๋ฆฐ์ง€ (java)

 

 

 

#์ด์ง„ํƒ์ƒ‰ 

 

 


์ œํ•œ ์‹œ๊ฐ„ ๋‚ด์— ํผ์ฆ์„ ๋ชจ๋‘ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ˆ™๋ จ๋„์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•œ๋‹ค.
์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋ ค๋ฉด ํŠน์ • ๊ฐ’์—์„œ๋Š” ์ง„ํ–‰์ด ๋ถˆ๊ฐ€ํ•  ๋•Œ ๊ทธ ๊ฐ’๋ณด๋‹จ ์ปค์•ผ ํ•˜๊ณ ,
๊ฐ€๋Šฅํ•œ ๊ฐ’ ์ค‘์—์„œ๋Š” ์ œ์ผ ์ž‘์•„์•ผ ํ•œ๋‹ค

๊ทธ๋Ÿฌ๋ฉด 1) ํ•˜๋‚˜์”ฉ ์˜ฌ๋ ธ๋‹ค ๋‚ด๋ฆฐ๋‹ค
2) ํŠน์ • ๊ธฐ์ค€์œผ๋กœ ๊ฐ’์„ ์™”๋‹ค๊ฐ”๋‹ค ํ•ด๋ณธ๋‹ค > binary?
  > binary ํ•˜๋Š” ๊ฒฝ์šฐ 0๋ถ€ํ„ฐ ๊ฐ€์žฅ ํฐ diff๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.

 

์ œ์ถœ ํ›„ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค 14์—์„œ ํ‹€๋ฆฌ๋Š” ๊ฒฝ์šฐ: ์ˆ™๋ จ๋„๋Š” 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค..

์ œ์ถœ ์ „ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ๋งˆ์ง€๋ง‰ ํ‹€๋ฆฌ๋Š” ๊ฒฝ์šฐ: ์ด์ง„ํƒ์ƒ‰ start <= end ์žŠ์ง€๋งˆ๋ผ...... ์Œ์ˆ˜๋œ๋‹ค.

 

 

import java.util.*;

class Solution {
    public int solution(int[] diffs, int[] times, long limit) {
        int answer = 0;
        int n = diffs.length;
        
        int start = 1;
        int end = Arrays.stream(diffs).max().getAsInt();
        
        while (start <= end) {
            int mid = (start + end) / 2;
            long takenTime = solve(n, mid, times, diffs, limit);
            
            // ์‹œ๊ฐ„์ด ๋” ๋งŽ์ด ๋‚˜์˜ค๋ฉด level๊ฐ’์„ ๋Š˜๋ ค์•ผ ํ•จ
            if (takenTime > limit) {   
                start = mid + 1;
            } else {
                answer = mid;
                end = mid - 1;
            }
        }
        
        return answer;
    }
    
    long solve(int n, int level, int[] times, int[] diffs, long limit) {
        long timeCnt = 0;
        for (int i = 0; i < n; i++) {
            int diff = diffs[i];
            int time_cur = times[i];
            int time_prev = 0;
            if (i > 0) {
                time_prev = times[i - 1];
            } 
            
                
            if (diff <= level) {
                timeCnt += time_cur;
            } else {
                timeCnt += (time_prev + time_cur) * (diff - level);
                timeCnt += time_cur;
            }
                
            if (timeCnt > limit) {
                return timeCnt;
            }
        }

        return timeCnt;
    }

}

 

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr