[Kotlin/프로그래머스] 코딩테스트 연습 > 연습문제 > 요격 시스템

👀 문제

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

👊 도전

1. 설계

  1. targets[1]을 기준으로 오름차순 정렬
  2. end(현재 내가 요격할 수 있는 max x좌표) 변수 선언
  3. targets 순회하며 target[1]이 end내 포함되면 패스
  4. 아니라면 새로 요격해야하므로 end를 target[1]로 갱신 및 answer(요격 횟수)++

2. 구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.*
class Solution {
    fun solution(targets: Array<IntArray>): Int {
        var answer: Int = 0
        targets.sortBy { it[1] }
        var end = 0
        targets.forEach { target ->
            if (target[0] >= end) {
                answer++
                end = target[1]
            }
        }
        return answer
    }
}

3. 결과

실행결과 🤟 성공 🤟

4. 설명

  1. target[1]을 기준으로 오름차순 정렬한다

  2. target[1]이 end에 포함되는지 체크한다

    • end는 내가 수용할 수 있는 최대 x 좌표값이다.
    • target[1]이 end에 포함되지 않으면(같음도 포함, 왜냐하면 같다는 뜻은 요격 범위에 포함되지 않는다는 뜻이므로) end를 해당 값으로 갱신하고 answer++한다.

👏 해결 완료!