https://school.programmers.co.kr/learn/courses/30/lessons/181188
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 접근
1. 폭격 미사일의 범위를 끝나는 지점(e)에 대해 오름차순 정렬
2. 다음 폭격 미사일의 시작점이 이전에 요격한 폭격 미사일의 끝점보다 크거나 같으면 요격 미사일 발사, answer 증가
다시 고민(2/7)
문제에서 원하는 것은 가장 적은 미사일로 모든 폭격 미사일들을 요격
이 뜻은 결국 안 겹치면 새로운 미사일이 필요하다고 생각
코드
def solution(targets):
answer = 0
targets.sort(key=lambda x: [x[1], x[0]]) # e를 기준으로 정렬
print(targets)
s = e = 0
for target in targets:
if target[0] >= e: # 현재 요소의 시작 시간이 이전 요소의 종료 시간보다 크거나 같으면
answer += 1
e = target[1] # 종료 시간을 현재 요소의 종료 시간으로 업데이트
return answer
문제 회고
예시의 그림이 직접 주어져 있기에 문제 이해를 더 빠르게 할 수 있었다.
위의 주어진 예시의 경우 e가 4, 5, 12로 업데이트 되며 answer가 3이 출력된다.
배열. sort(key = lambda x: 기준)
저 그림의 풀이는 우선 오류!! 개구간이므로 3번째 그림에서도 요격 +1!! => 어쩐지.. 이상하더라..!!
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스]Lv2. 리코쳇 로봇(Python) (0) | 2024.02.09 |
---|---|
[프로그래머스]Lv2. 이모티콘 할인행사(Python) (0) | 2024.02.06 |
[프로그래머스]Lv2. 연속된 부분 수열의 합(Python) (0) | 2024.02.04 |
[프로그래머스]Lv2. 숫자 변환하기(Python) (0) | 2024.02.03 |
[프로그래머스]Lv3. 주사위 고르기(Python) (0) | 2024.02.02 |