일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 컴퓨터의 구조
- 파이썬
- attribute
- 30. Substring with Concatenation of All Words
- 109. Convert Sorted List to Binary Search Tree
- data science
- 시바견
- Convert Sorted List to Binary Search Tree
- DWG
- Generator
- Python
- shiba
- 715. Range Module
- LeetCode
- 밴픽
- 315. Count of Smaller Numbers After Self
- 43. Multiply Strings
- concurrency
- kaggle
- Python Code
- Regular Expression
- Protocol
- iterator
- Class
- 프로그래머스
- Python Implementation
- Substring with Concatenation of All Words
- Decorator
- t1
- 운영체제
Archives
- Today
- Total
Scribbling
프로그래머스: 단속카메라 본문
route들이 최대한 잘 겹치게 만드는 것이 목표인 문제이다.
이런 문제는 input의 순서를 강제하는 것이 큰 도움이 되는 경우가 많은데,
여기서는 routes를 사전에 정렬하는 것이 이에 해당된다.
정렬이 필요한 이유에 대해서는 생각해 볼 필요가 있는데,
이 문제에서는 group간 겹치는 문제를 회피하기 위해서이다.
아래 예제를 보자.
[[-20,-15], [-14,-5], [-18,-13], [-5,-3]]
groups = [[-20, -15]
정렬하면, [[-20, -15], [-18, -13], [-14, -5], [-5, -3]]
1) [-18, -13] 처리
group 내의 [-20, -15]와 겹치므로 group[0]를 [-20, -15]와 [-18, -13]의 교집합인 [-18, -15]로 처리한다.
따라서 group = [[-18, -15]]
2) [-14, -5]
group 내에 겹치는 원소가 없다.
따라서 group = [[-18, -15], [-14, -5]]
3) [-5, -3]
group 내에 [-14, -5]와 겹친다.
따라서 group = [[-18, -15], [-5, -5]]
def solution(routes):
routes.sort()
groups = [routes[0]]
for i in range(1, len(routes)):
route = routes[i]
grouped_Flag = False
for j, group in enumerate(groups):
if route[0] <= group[1]:
groups[j] = [route[0], min(route[1], group[1])]
grouped_Flag = True
break
if not grouped_Flag:
groups.append(route)
return len(groups)
'Computer Science > Coding Test' 카테고리의 다른 글
프로그래머스: N으로 표현 (0) | 2021.10.25 |
---|---|
LeetCode: 106. Construct Binary Tree from Inorder and Postorder Traversal (0) | 2021.10.21 |
프로그래머스: 섬 연결하기 (0) | 2021.10.21 |
프로그래머스: 구명보트 (0) | 2021.10.21 |
프로그래머스: 큰 수 만들기 (0) | 2021.10.20 |