Daily LeetCode Challenge - Programmers 요격 시스템

Min Young Kim·2023년 4월 15일
0

algorithm

목록 보기
122/198

Problem From.
https://school.programmers.co.kr/learn/courses/30/lessons/181188

오늘 문제는 릿코드 대신에 프로그래머스에 새로운 문제가 생겨서 그걸 풀어보았다.

문제는 요격시스템이라는 제목인데 장황한 설명을 간단하게 줄여보자면
각각의 범위를 가진 targets 라는 배열에서 서로 겹치는 범위를 가지는 배열을 줄여나갈때 최소의 횟수로 배열을 모두 없앨 수 있는 숫자를 리턴하는 문제였다.

문제를 푸는 법은 간단하였는데, 먼저 각 원소의 끝자리를 기준으로 오름차순으로 정렬한 뒤, 원소를 하나씩 가져오면서 각 원소의 시작점이 그 전 원소들의 끝자리의 최솟값보다 크거나 같으면 정답에 1을 더해주면서 끝자리를 갱신해주는 식으로 풀 수 있었다.

class Solution {
    fun solution(targets: Array<IntArray>): Int {
        var answer: Int = 0
        
        targets.sortBy { it[1] }
        
        var end = -1
        
        for(target in targets) {
            if(target[0] >= end) {
                end = target[1]
                answer += 1
            }
        }
        
        return answer
    }
}
profile
길을 찾는 개발자

0개의 댓글