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 |