[プログラマー]管制カメラ(Java)


質問する


リンク
復習する

に答える


この問題には答えが思いつかない.重なり合う点の個数を利用して問題を解決しようとしたが,これは正しくない方法であった.
だから他の人の解答を見て、とても不思議で、もっと努力しなければなりません...

  • 入る時間を基準に昇順に並べます.

  • 最初に入った時間と次に入った時間を比較します.
  • 처음 진출한 시간 >= 다음 진입한 시간の場合、カメラを追加で取り付ける必要はありません.처음 진출한 시간 < 다음 진입한 시간の場合、1台のカメラを追加して取り付け、比較した基準値を次の進入時間に変更します.

  • 上記の手順を繰り返します.
  • コード#コード#

    import java.util.*;
    
    class Solution {
        public int solution(int[][] routes) {
            int answer = 0;
    
            // 진출한 시점 기준으로 오름차순 정렬
            Arrays.sort(routes, new Comparator<int[]>() {
                @Override
                public int compare(int[] o1, int[] o2) {
                    return o1[1] - o2[1];
                }
            });
    
            int min = Integer.MIN_VALUE;
            for(int[] route : routes) {
                if (min < route[0]) {
                    min = route[1];
                    answer++;
                }
            }
    
            return answer;
        }
    }
    ソース:リンク
    以上のブログの説明で助かりました!!