2023년 03월 07일 화요일 - 왜 아직 화욜?


오늘 올려볼 문제는 2187번 Minimum Time to Complete Trips 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진

오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.

생각보다는 어려운 문제


입력


사진에서도 볼 수 있듯이 int 배열 1개와 int 값 1개가 입력으로 들어온다.



풀이 및 코드


모든 버스가 독립적으로 운행되고 한 번 운행될 때 소요되는 시간들이 주어진다.

버스가 한 번 운행될 때 여행을 한 번 했다고 했을 때 totalTrips만큼 여행하는데 필요한 최소한의 시간이 얼마인지 구하는 문제이다.


오늘은 처음부터 정답을 생각해냈다.

이진 탐색으로 문제를 풀었다.

시간을 left, right로 두고 mid를 가지고 배열을 순회하면서 비교하는 식으로 문제를 풀었다.


이제 코드를 봐보자!


풀이코드

class Solution {
    public long minimumTime(int[] time, int totalTrips) {
        long left = 0, right = 100000000000000l;
        
        while(left < right) {
            long mid = left + (right - left) / 2;
            long midResult = 0;
            
            for(var t : time) midResult += mid / t;
            
            if(midResult < totalTrips) left = mid + 1;
            else right = mid;
        }
        
        return left;
    }
}




제출 화면

leetcode 문제 맞았습니다


나는 휴학생인데 동기들이 개강하면서 나도 바빠졌다...

이게 맞나..?


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.

+ Recent posts