📌 LeetCode [539]: Minimum Time Difference
🔗 문제 링크
문제 설명 📄
주어진 시간 리스트에서 두 시간 간의 차이가 가장 작은 값을 계산하세요.
- 시간은 "HH:MM" 형식의 문자열로 제공됩니다.
- 하루는 1440분이며, 경계를 넘어가는 시간 차이도 고려해야 합니다.
문제 접근 방식 🚶
- 시간을 분 단위로 변환:
- 각 "HH:MM" 문자열을 분 단위의 정수로 변환합니다.
- 정렬:
- 시간 값을 정렬하여 인접한 시간 간의 차이를 계산합니다.
- 최소 차이 계산:
- 인접한 시간 간의 차이를 계산하며 최소값을 업데이트합니다.
- 첫 번째와 마지막 시간의 차이를 하루의 경계로 연결하여 계산합니다.
Solution 💻
class Solution:
def findMinDifference(self, timePoints: List[str]) -> int:
times = []
for time in timePoints:
hour, minute = map(int, time.split(":"))
times.append(hour * 60 + minute)
times.sort()
answer = float('inf')
for i in range(-1, len(times) - 1):
diff = (times[i + 1] - times[i]) % 1440
answer = min(answer, diff)
return answer
시간 복잡도 분석 ⏲️
- 시간 복잡도: O(n log n)
- 시간 리스트를 정렬하는 데 O(n log n)이 소요됩니다.
- 인접한 시간의 차이를 계산하는 데 O(n)이 소요됩니다.
- 공간 복잡도: O(n)
- 변환된 분 단위 시간 리스트를 저장하는 데 필요한 공간입니다.
'알고리즘' 카테고리의 다른 글
LeetCode [190]: Reverse Bits (0) | 2025.01.08 |
---|---|
LeetCode [874]: Walking Robot Simulation (0) | 2025.01.06 |
LeetCode [53]: Maximum Subarray (0) | 2025.01.05 |
LeetCode [1508]: Range Sum of Sorted Subarray Sums (0) | 2025.01.05 |
LeetCode [380]: Insert Delete GetRandom O(1) (0) | 2025.01.04 |