Daily LeetCode Challenge - 452. Minimum Number of Arrows to Burst Balloons

Min Young Kim·2023년 1월 5일
0

algorithm

목록 보기
38/198

Problem From.
https://leetcode.com/problems/minimum-number-of-arrows-to-burst-balloons/

오늘 문제는 가로로 긴 풍선이 주어질때 화살을 던져서 모든 풍선을 터뜨릴때 필요한 최소의 화살 갯수를 구하는 문제였다.

풍선의 범위가 IntArray 로 주어지고 화살을 x 좌표 하나를 골라 던져야했는데, 먼저 정렬을 사용하여 IntArray 의 첫번째 원소가 작은 순서로 정렬하고, 첫번째 원소가 같다면 두번째 원소 순서로 정렬하였다.

그런다음 풍선을 하나씩 보면서 겹치는 풍선 범위의 최대값을 줄여나가며, 겹치지 않는다면 하나의 화살로 터뜨리지 못한다고 판단, 정답에 1을 더해주고 다시 새로운 범위로 검사해 나가는 방식을 사용하였다.

class Solution {
    fun findMinArrowShots(points: Array<IntArray>): Int {
        
        if(points.size == 0) return 0
        
        var answer = 0
        
        val comparator : Comparator<IntArray> = compareBy<IntArray> {it[0]}.thenBy { it[1] }
        val sortedPoints = points.sortedWith(comparator)
        
        var max = Int.MIN_VALUE
        
        if(sortedPoints[0][0] == max) return 1
        
        sortedPoints.forEach { array ->
            
            if(array[0] > max) {
                answer += 1
                max = array[1]
            }
            
            if(array[1] < max) {
                max = array[1]
            }

        }
        
        return answer

    }
}
profile
길을 찾는 개발자

1개의 댓글

comment-user-thumbnail
2023년 1월 5일

굿 풍선터트리면 시끄러운데

답글 달기