현제의 현재이야기
[programmers/그리디] 요격시스템, 단속카메라 본문
https://school.programmers.co.kr/learn/courses/30/lessons/181188
요격시스템.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()을 사용
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 함수를 두면 고정의 효과를 줄 수 있다는 것을 알게되었다.
'algorithm' 카테고리의 다른 글
[백준/파이썬] 2003 - 수들의 합2 (1) | 2023.05.22 |
---|---|
[codetree] 2n개 중에 n개의 숫자를 적절하게 고르기 (0) | 2023.05.09 |
[codetree] 나이트, 안전지대(BFS, DFS) (0) | 2023.02.09 |
[codetree] 행복한 수열 (0) | 2023.02.05 |
[codetree] 떨어지는 1자 블록 (0) | 2023.02.04 |
Comments