https://school.programmers.co.kr/learn/courses/30/lessons/181188
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
A 나라가 B 나라에 미사일을 보낸다. 이 세계관은 2차원 공간이다. X축과 평행한 방향으로 미사일이 떨어진다. 요격 미사일은 Y축과 평행하게 날라가고 그 위치에 있는 적 미사일들을 다 요격할 수 있다. 요격해서 미사일을 안 맞을 수 있는 최소한의 요격 미사일 갯수 구하기 문제이다.
풀이 과정
그리디 문제이다.
x좌표를 나타내는 정수 쌍 (s,e) 형태로 주어지는데 어차피 s가 e보다 크면 같이 요격할 수 없고 요격 미사일을 하나 더 써야 한다.
그래서 e를 기준으로 정렬하고 for 문을 돌면서 s가 e보다 answer+=1을 해주면 끗!
시간복잡도
정렬인 O(NlogN) + 탐색 O(N) = O(NlogN)
def solution(targets):
answer = 0
targets.sort(key=lambda x : x[1])
tmp=0
for s,e in targets:
if tmp <= s :
tmp = e
answer+=1
return answer
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Level 2 | Python] 완전범죄 (완탐 + 더 효율적인 코드) (0) | 2025.02.26 |
---|---|
[Level 3 | Python] 미로 탈출 명령어 (0) | 2025.02.24 |
[Level 2 | Python] 호텔 대실 (0) | 2025.02.24 |
Python 프로그래머스) 성격 유형 검사하기 (0) | 2024.05.14 |
Python 프로그래머스) 가장 많이 받은 선물(2024 KAKAO WINTER INTERSHIP) (0) | 2024.05.11 |