넘치게 채우기

[LeetCode] 539. Minimum Time Difference 본문

PS/LeetCode

[LeetCode] 539. Minimum Time Difference

riveroverflow 2024. 9. 16. 11:36
728x90
반응형

https://leetcode.com/problems/minimum-time-difference/description/?envType=daily-question&envId=2024-09-16

leetcode - Minimum Time DIfference

문제 유형 : 정렬, 문자열 처리

문제 난이도 : Medium

 

문제

Given a list of 24-hour clock time points in "HH:MM" format, return the minimum minutes difference between any two time-points in the list.

 

"HH:MM"의 형식으로 24시간기준의 시간이 배열로 주어진다.

두 시간의 최소 시간차를 분단위의 정수로 구하시오.

 

풀이

우선, 모든 시간을 분단위로 변환한다.

그 뒤, 정렬한다.

원형으로 인접한 두 시간의 차이를 구해서 최소값을 업데이트한다.

 

코드

C++

#pragma GCC optimize("03", "unroll-loops");
static const int __ = [](){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    return 0;
}();

class Solution {
public:
    int timeToMins(string time) {
        return stoi(time.substr(0, 2)) * 60 + stoi(time.substr(3, 2));
    }
    int findMinDifference(vector<string>& timePoints) {
        vector<int> minutes;
        for(const auto &time : timePoints) {
            minutes.push_back(timeToMins(time));
        }
        sort(minutes.begin(), minutes.end());

        int minDiff = 1440 + minutes[0] - minutes.back();
        for(int i = 1; i < minutes.size(); i++) {
            minDiff = min(minDiff, minutes[i] - minutes[i-1]);
        }

        return minDiff;
    }
};
728x90
반응형