[1스4코2파] # 242. LeetCode 56. Merge Intervals

gunny·2023년 9월 2일
0

코딩테스트

목록 보기
241/530

[1스4코2파] 1명의 스위프트 개발자와 4명의 코틀린 개발자, 2명의 파이썬 개발자코딩 테스트 서막 : 1스4코1파

Rule :

하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원
백준 플래티넘, 프로그래머스 4단계, 개발자 탈퇴 시 모임 탈퇴 가능

START :

[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일차)

Today :

2023.09.02 [242일차]
LeetCode 56. Merge Intervals
https://leetcode.com/problems/merge-intervals/

56. 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

        

증빙

여담

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글