https://school.programmers.co.kr/learn/courses/30/lessons/42884?language=java

import java.util.*;

//우선순위 큐로 a,b 에서
// 1. a가 낮은 값 정렬. 
// 2. b가 높은 값 정렬
//cur, next 각 하나씩 poll해서 빼서 범위 비교 . 범위 벗어나면 cur = next 갱신 후 next도 poll해서 갱신
//cnt++
class Dist implements Comparable<Dist>{
    int src;
    int dst;
    Dist(int Src, int Dst){
        src =Src;
        dst = Dst;
    }
    @Override
    public int compareTo(Dist tar) // compareTo는 메서드 시그니처
    {
       if(this.src == tar.src){
           return tar.dst - this.dst; // 높은 순 정렬
       }
       else{
           return this.src - tar.src; // 낮은 순 정렬
       }
     }
}

class Solution {
    
    public int solution(int[][] routes) {
        int answer = 0;
        PriorityQueue<Dist>pq = new PriorityQueue<>();
        for(int y = 0; y < routes.length; ++y){
            pq.offer(new Dist(routes[y][0], routes[y][1]));
        }
        Dist prev = pq.poll();
        answer++;
        Dist cur;
        while(!pq.isEmpty()){
           cur = pq.poll();
           if(prev.dst < cur.src)
           {
              prev = cur;
              answer++;
           }
           else{
              prev.src = Math.max(prev.src, cur.src);
              prev.dst = Math.min(prev.dst, cur.dst);
           }
        }
        return answer;
    }
}

 

1. 우선순위 정렬

2. 특정 영역 좁혀나가기

3. 범위 벗어나면 answer++

'프로그래머스 > 코딩테스트' 카테고리의 다른 글

lv 3) N으로 표현 [다시]  (0) 2026.05.02
Java lv1) 공원산책  (0) 2026.05.01
lv3 sql) 있었는데요 없었습니다.  (0) 2026.04.22
lv3 ) 숫자게임  (0) 2026.04.22
카카오 lv1) 신규 아이디 추천  (2) 2026.04.22

+ Recent posts