본문 바로가기

알고리즘

PG)단속 카메라 -lv3

https://school.programmers.co.kr/learn/courses/30/lessons/42884

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

def solution(routes):
#     아이디어
# 정렬을 이용해야한다.
# 진입이 지점이 가장 작은 순부터
# 진출 시점을 기준으로 카메라를 설치한다.
    routes.sort(key=lambda x: (-x[1], -x[0]))
    routes = [routes[i] for i in range(len(routes)-1, -1, -1)]
    answer = 1
    last = routes[0][1]

    for i in range(1, len(routes)):
        if routes[i][0] <= last <= routes[i][1]:
            continue
        else:
            answer += 1
            last = routes[i][1]

    return answer

 

제법 쉬운 그리디 문제이다.

이 문제의 키포인트는 두가지이다.

진입 시점이 가장 작은 것부터 오름차순으로 정렬하고, 카메라를 설치하는 기준을 각 차량의 진출 시점으로 잡아야한다.

왜냐하면 진입시점이 가장 작은 것부터로 정렬했기 때문에 최대한 두 개의 차량이 겹치려면 진출 시점으로 잡아야 최적의 해를 만족하기 때문이다.

'알고리즘' 카테고리의 다른 글

PG)베스트 앨범  (0) 2024.07.11
PG)숫자 게임 -lv3  (0) 2024.07.10
PG) 단어 변환 - lv3  (0) 2024.07.08
PG) 야근지수 -lv3  (0) 2024.07.07
PG) 네트워크 - lv3  (0) 2024.07.06