728x90
반응형
문제:
고속도로를 이동하는 모든 차량이 고속도로를 이동하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 합니다.
고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때, 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야 하는지를 return 하도록 solution 함수를 완성하세요.
문제 풀이:
프로그래머스에서 이 문제의 태그를 탐욕법으로 걸어 놓았으니 탐욕적으로 풀려고 한다. 탐욕적인 방법은 말 그래도 욕심을 부려서 최고의 결과를 얻고자 하는 방법이다.( 물론 항상 얻는다는 보장은 없다.!) 따라서 이 문제에서 적게 쓰고 최고의 결과를 얻기 위해서는 차량의 진출입로에 단속카메라를 설치하는 것이 가장 최상의 방법일 것이다.
따라서 각 차량이 단속카메라에 만났는지 확인하는 check 배열을 만들었고, 임의로 설치한 단속카메라를 만났다면 1로 바뀌도록 하였다. routes를 정렬을 하고 뒤에서부터 진입로에 카메라를 설치해 나가도록 하였다.
처음에는 -5에 설치를 하고 이 카메라가 확인할 수 있는 다른 차량을 확인해보았을 때. [-14,-5]와 [-20, 15]가 이 카메라로 확인을 할 수 있으니 이 차량들의 check도 1로 바꾼다. 그 다음에는 -18에 설치를 해서 [-18, 13]의 check도 1로 바꾸도록 한다. 따라서 2 개의 단속 카메라가 필요하게 된다.
ps) 뒤에서부터가 아닌 앞에서부터 하려고 했으나 통과를 하지 못해서 하지 못하였습니다.
1 2 3 4 5 6 7 8 9 10 11 12 | def solution(routes): routes.sort() answer = 0 check =[0]*len(routes) for i in range(len(routes)-1,-1,-1): if check[i]==0: camera = routes[i][0] answer+=1 for j in range(i,-1,-1): if check[j]==0 and routes[j][1] >= camera >=routes[j][0]: check[j]=1 return answer | cs |
728x90
반응형
'Algorithm > Python' 카테고리의 다른 글
[Programmers]Lv 3. 기지국 설치 (0) | 2019.07.09 |
---|---|
[Programmers]Lv 3. 섬 연결하기 (0) | 2019.07.08 |
[BOJ]2869. 달팽이는 올라가고 싶다. (0) | 2019.07.06 |
[BOJ]1011. Fly me to the Alpha Centauri (0) | 2019.07.05 |
[Programmers]Lv 3. 여행경로 (0) | 2019.07.04 |