현제의 현재이야기

[programmers/그리디] 요격시스템, 단속카메라 본문

algorithm

[programmers/그리디] 요격시스템, 단속카메라

현재의 현제 2023. 7. 13. 15:05

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

 

프로그래머스

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

programmers.co.kr

요격시스템.py

def solution(targets):
    targets.sort(key=lambda x: x[1])  
    target_j = float('inf')
    answer = 0
    
    for i, j in targets:
        if i >= target_j:
            answer += 1
            target_j = j
        target_j = min(target_j, j)

    return answer + 1
  • target_j를 두어서, target_j가 i보다 크냐, 작냐에 따라서 분기됨
  • 만약 i보다 크게 되면, 끊어짐을 의미하고 answer을 하나 추가한 뒤 새로운 미사일의 끝으로 target_j가 변경
  • 그렇지 않다면, 즉 i가 target_j보다 작아서 한번에 관통이 가능하다면 j를 고정하기 위해서 min()을 사용
 

프로그래머스

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

programmers.co.kr

def solution(routes):
    routes.sort(key=lambda x: x[0])
    answer = 0
    m = 30000
    for i, j in routes:
        if i > m:
            answer += 1
            m = j
        m = min(m, j)
        
    return answer + 1

비슷한 원리.


나중에 다시 꼭 복습해야되는 문제. 그리디는 정렬과 min, max 함수를 잘 사용해야겠다.

그리고 위치를 고정시킬 때, 새로운 Index 변수를 두는 것 보다 min, max 함수를 두면 고정의 효과를 줄 수 있다는 것을 알게되었다.

Comments