하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원
백준 플래티넘, 프로그래머스 4단계, 개발자 탈퇴 시 모임 탈퇴 가능
[3코1파] 2023.01.04~ (242일차)
[4코1파] 2023.01.13~ (234일차)
[1스4코1파] 2023.04.12~ (145일차)
[1스4코2파] 2023.05.03 ~ (123일차)
2023.09.02 [242일차]
LeetCode 56. Merge Intervals
https://leetcode.com/problems/merge-intervals/
문제 설명
시작점과 끝점이 있는 숫자 쌍의 리스트 배열이 주어질 때 겹치는 부분이 있으면 merge 하는 것 !
문제 풀이 방법
intervals 배열을 순서대로 정렬하고 처음에 위치한 숫자 쌍을 기준으로 루프를 돌면서 숫자 쌍의 시작점과 기준점의 종료점을 비교함
값을 비교할 때 기준 값의 종료점이 더 크거나 같은 경우는 범위가 겹치니까 종료점이 더 큰 것을 추출, 기준값의 종료점이 더 작으면 범위가 겹치지 않으므로 숫자쌍을 새로운 기준갑승로 정의하고 결과값을 저장함!
내 코드
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
intervals.sort(key=lambda pair: pair[0])
output = [intervals[0]]
for start, end in intervals:
lastEnd = output[-1][1]
if start <= lastEnd:
# merge
output[-1][1] = max(lastEnd, end)
else:
output.append([start, end])
return output
증빙
여담
끝