이번에 풀어본 문제는
프로그래머스 요격 시스템 입니다.
class Solution {
fun solution(targets: Array<IntArray>): Int {
var answer = 0
targets.sortBy { it[1] }
var end = Integer.MIN_VALUE
for (target in targets) {
val (s, e) = target
if (s >= end) {
answer++
end = e
}
}
return answer
}
}
미사일을 모두 요격시킬 수 있는 최소 개수를 반환하는 문제입니다.
먼저 (s, e)쌍으로 이루어진 targets 배열을 e 값을 기준으로 오름차순 정렬해주면 매 시점 가장 우선적으로 요격시켜야 경우의 수를 추적할 수 있습니다.
end 변수는 이전에 설치한 요격 미사일의 위치를 담고 있으며, 다음 설치할 위치를 탐색하는 과정에서 end 보다 작은 값, 즉 이미 요격 범위에 포함된 target은 넘어가주면 됩니다.