프로그래머스 120876번 문제인 "겹치는 선분의 길이" Lv.0을 파이썬으로 풀어보도록 하겠습니다.
[프로그래머스] 겹치는 선분의 길이 Lv.0 - [파이썬/python]

💻 문제 설명
선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines
가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 반환(return) 하도록 solution 함수를 완성해보세요.
lines
가 [[0, 2], [-3, -1], [-2, 1]]일 때 그림으로 나타내면 다음과 같습니다.

선분이 두 개 이상 겹친 곳은 [-2, -1], [0, 1]로 길이 2만큼 겹쳐있습니다.
🚨 제한사항
lines
의 길이 = 3lines
의 원소의 길이 = 2- 모든 선분은 길이가 1 이상입니다.
lines
의 원소는 [a, b] 형태이며, a, b는 각각 선분의 양 끝점 입니다.- -100 ≤ a < b ≤ 100
🌟 소스 코드

⏱ 시간복잡도
위 코드의 시간 복잡도는 O(n log n)입니다.
- 정렬: points.sort()
선분의 시작점과 끝점을 정렬하는 데 O(n log n)의 시간이 소요됩니다. 정렬은 일반적으로 O(n log n)의 시간 복잡도를 가집니다.
- 루프: for point, point_type in points
모든 포인트를 순회하는 데 O(n)의 시간이 소요됩니다.
따라서, 전체 시간 복잡도는 정렬에 소요되는 시간(O(n log n))과 루프에 소요되는 시간(O(n))을 합한 것이므로, 최종적으로 O(n log n)이 됩니다.
이 방법은 모든 선분을 한 번씩 검사하므로, 선분의 수가 많아도 효율적으로 동작합니다.
🏳🌈 테스트 결과


'코딩테스트' 카테고리의 다른 글
[프로그래머스] 주사위 게임 3 - Lv.0 (52) | 2023.10.25 |
---|---|
[프로그래머스] 다음 큰 숫자 - Lv.2 (59) | 2023.10.21 |
[프로그래머스] 튜플 - Lv.2 (54) | 2023.10.14 |
[프로그래머스] 문자열 곱하기 - Lv.0 (53) | 2023.10.14 |
[프로그래머스] 나누어 떨어지는 숫자 배열 - Lv.1 (55) | 2023.10.14 |