Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 구현
- ssd
- 1단계
- test-helper
- 모두를 위한 딥러닝 강좌 시즌1
- AWS
- 백준
- docker
- C++
- 프로그래머스
- 3단계
- 파이썬
- cs
- STL
- 자료구조 및 실습
- 머신러닝
- pytorch
- 그리디
- 이것이 코딩테스트다 with 파이썬
- MySQL
- Python
- CS231n
- 실전알고리즘
- 딥러닝
- SWEA
- 2단계
- ubuntu
- 전산기초
- 코드수행
- Object detection
Archives
- Today
- Total
곰퓨타의 SW 이야기
[프로그래머스 level3 단속카메라] 그리디 활용하기 본문
해결해야하는 문제는 다음과 같았다.
https://programmers.co.kr/learn/courses/30/lessons/42884
코딩테스트 연습 - 단속카메라
[[-20,15], [-14,-5], [-18,-13], [-5,-3]] 2
programmers.co.kr
정확성만을 고려한 아이디어는 다음과 같다.
아이디어를 바탕으로 작성한 코드는 다음과 같다.
def solution(routes):
answer = 0
INF = int(1e9)
while routes :
min_routes = INF
max_routes = -30001
car_arr = [0]*(60002)
for s,d in routes:
car_arr[s+30000] += 1
car_arr[d+30000] += -1
if d > max_routes :
max_routes = d
if s < min_routes :
min_routes = s
min_routes += 30000
max_routes += 30000
for i in range(min_routes,max_routes+1):
car_arr[i] += car_arr[i-1]
find_index = car_arr.index(max(car_arr))
i=0
while i < len(routes):
if routes[i][0]+30000 <= find_index and routes[i][1]+30000 >= find_index :
routes.pop(i)
else :
i+=1
answer += 1
return answer
하지만 이는 효율성을 통과하지 못한다.
따라서, 효율성을 위해 다음과 같은 생각을 하였다.
이러한 아이디어를 바탕으로 작성한 코드는 다음과 같다.
def solution(routes):
answer = 0
while routes :
routes.sort(reverse=True,key=lambda x : x[1])
s,d=routes.pop()
i=0
while i < len(routes):
if routes[i][0]<= d and routes[i][1] >= d:
routes.pop(i)
else :
i+=1
answer += 1
return answer
이런 문제는 광고삽입 문제와, 추석 트래픽 문제와 시간/거리를 다룬다는 점에 있어서 비슷하다고 생각하였다...
(
광고 삽입 : https://kom-story.tistory.com/345
추석 트래픽 : https://kom-story.tistory.com/84
)
효율성면에서 한번에 통과하지 못하는것이 반복되는데, 더 좋은 알고리즘이 무엇인지에 대해 생각하는 힘을 길러야할 것 같다!!
'TIL > 프로그래머스' 카테고리의 다른 글
[프로그래머스 level3 최고의 집합] 수학 응용하기 (0) | 2021.09.27 |
---|---|
[프로그래머스 level3 가장 긴 팰린드롬] 문자열 파싱하기 (0) | 2021.09.25 |
[프로그래머스 level3 징검다리 건너기] 이분탐색 활용하기 (0) | 2021.09.23 |
[프로그래머스 level3 야근지수] 딕셔너리 활용하여 효율성 뿌시기 (0) | 2021.09.21 |
[프로그래머스 level3 멀리 뛰기] 팩토리얼 활용하기 (0) | 2021.09.20 |
Comments