알고리즘

[Lv_2] 요격 시스템

deedee2 2023. 8. 16. 20:37
728x90
import java.util.*;

class Solution {
    public int solution(int[][] targets) {
        // 종료시점 기준 배열정렬
        Arrays.sort(targets, new Comparator<int[]>() {
           public int compare(int[] s1, int[] s2) {
               if (s1[1] == s2[1]) {
                   return s2[0] - s1[0];
               } else {
                   return s1[1] - s2[1];
               }
           }
        });

        int start = 0;
        int end = 0;
        int answer = 0;

        for (int i = 0; i < targets.length; i++) {
            int r1 = targets[i][0];
            int r2 = targets[i][1];

            // 첫 탄환을 기준탄환으로 지정
            if (i == 0) {
                start = r1;
                end = r2;
                answer++;
                continue;
            }

            // 판별탄환 시작지점이 기준탄환 종료지점보다 뒷 지점일 경우 갱신하고 요격갯수 +1
            if (end <= r1) {
                start = r1;
                end = r2;
                answer++;
            }
            // System.out.println(Arrays.toString(targets[i]));
        }
        // System.out.println(answer);
        return answer;
    }
}

참고사진

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