09-08. Greedy(그리디 알고리즘)
0. 들어가기전
문제를 해결할 때 매 단 게에서 현재 상황의 가장 최선의 선택을 하는 방식으로 최적의 해답을 찾는 알고리즘. 즉, 각 단게에서 당장 이득이 되는 선택을 반복적으로 하여 최종적인 해답을 얻으려는 방법
국소 최적해(현재 최선의 선택)가 전체 최적해로 이어진다고 가정
1. 단속카메라
프로그래머스 Lv.3 / 체감 난이도 Lv.2
import java.util.*;
class Solution {
public int solution(int[][] routes) {
// 진입 지점을 기준으로 오름차순 정렬
Arrays.sort(routes, (a, b) -> a[0] - b[0]);
int count = 1; // 필요한 카메라 수
int lastCamera = routes[0][1]; // 마지막 카메라 위치
// 모든 차량의 경로를 확인
for (int i = 1; i < routes.length; i++) {
// 현재 차량의 진입 지점이 마지막 카메라 위치보다 뒤에 있으면
if (routes[i][0] > lastCamera) {
count++; // 새로운 카메라 필요
lastCamera = routes[i][1]; // 카메라 위치 업데이트
} else {
// 현재 차량의 진출 지점이 더 앞에 있다면, 카메라 위치를 앞으로 당김
lastCamera = Math.min(lastCamera, routes[i][1]);
}
}
return count;
}
}2. 기지국 설치
프로그래머스 Lv.3 / 체감 난이도 Lv.3
3. 섬 연결하기
프로그래머스 Lv.3 / 체감 난이도 Lv.4
Last updated