프로그래머스

[프로그래머스][Kotlin] 요격 시스템

끝까지 처음처럼 2023. 4. 15. 22:23
728x90

해당 문제는 스케줄링문제에 대해서 알고 있는 분이라면 쉽게 통과 할 수 있는 문제였습니다.

문제를 요약하자면 즉 여러개의 선이 있을 때 그 선들을 수직으로 이을 수 있는 선들의 갯수 중 최소값을 찾는 문제입니다.

해당 문제와 비슷한 문제를 한번 작성했었던 적이 있습니다.

https://want-kotlin-pro.tistory.com/143

 

[백준][Kotlin]1931번 회의실 배정

해당 문제는 주어진 자료를 끝나는 시간이 빠른 순으로 정렬한 뒤에 끝나는 시간이 같을 경우 시작시간이 빠른 순으로 정렬한 뒤에 반복문을 진행 하면서 현재 진행되고 있는 회의의 끝나는 시

want-kotlin-pro.tistory.com

 

백준의 회의실 배정과 비슷한 문제 였습니다.

입력값으로 받은 targets를 e의 값이 같을 때는 s가 더 빠른 순으로 아닐 때는 먼저 끝나는 순으로 정렬 을 한뒤에

반복문을 이용하여 answer의 값을 구하면 되는 문제였습니다.

 

 

하기는 제가 작성하 코드와 실행 결과 입니다.

 

class Solution {
    fun solution(targets: Array<IntArray>): Int {
        var answer: Int = 0
        var target = targets.sortedWith(kotlin.Comparator { o1, o2 -> if(o1[1] == o2[1]) o1[0].compareTo(o2[0])
        else o1[1].compareTo(o2[1])})

        var check = target[0][1]
        answer++

        for(i in 1 .. target.size-1){
            if(target[i][0] >= check){
                answer++
                check = target[i][1]
            }
        }

        return answer
    }
}
테스트 1 통과 (16.24ms, 62.1MB)
테스트 2 통과 (23.51ms, 62.5MB)
테스트 3 통과 (17.69ms, 62.4MB)
테스트 4 통과 (17.31ms, 64.2MB)
테스트 5 통과 (36.52ms, 72.2MB)
테스트 6 통과 (117.00ms, 97.2MB)
테스트 7 통과 (410.98ms, 162MB)
테스트 8 통과 (351.16ms, 162MB)
테스트 9 통과 (405.78ms, 161MB)
테스트 10 통과 (327.02ms, 142MB)
테스트 11 통과 (16.33ms, 62.6MB)