그리디 4

프로그래머스: 단속카메라

✅ 문제차량의 진입~진출 구간은 범위로 주어집니다.이 범위들이 겹치는 구간을 찾고, 그 구간의 끝부분에 카메라를 설치하면, 겹치는 모든 차량을 한 번에 단속할 수 있어요.겹치지 않는 새로운 구간이 나오면, 새 카메라가 필요합니다.✅ 문제해결 (정렬 + 그리디)모든 차량 경로를 진출지점 기준으로 정렬현재 카메라의 설치 위치를 추적 (camera = -30001로 초기화)각 차량 경로를 보면서, 진입 지점 > camera라면 새로운 카메라 필요JAVA 코드import java.util.*;class Solution { public int solution(int[][] routes) { // 1. 차량 경로를 진출지점 기준으로 정렬 Arrays.sort(routes, (a, b)..

Algorithm 2025.04.21

프로그래머스: 구명보트 최소 개수 계산

문제무인도에 사람들이 갇혀 있고, 이들을 구명보트를 이용해 구조해야 합니다.하지만 구명보트는 한 번에 최대 2명까지 탈 수 있고, 무게 제한도 있습니다.목표는?가능한 최소한의 구명보트를 사용해서 모든 사람을 구조하는 것입니다.예시사람들의 몸무게: [70, 50, 80, 50]구명보트 무게 제한: 100kg이때,50 + 50은 함께 탈 수 있음 → 보트 1대70과는 혼자 타야 함 → 보트 1대80도 혼자 타야 함 → 보트 1대총 3대의 구명보트가 필요합니다.접근 방식(그리디 + 투 포인터)사람들을 몸무게 기준으로 정렬한 뒤,가장 가벼운 사람과 가장 무거운 사람을 한 쌍으로 매칭합니다.무거운 사람부터 하나씩 처리하면서, 가벼운 사람과 같이 탈 수 있으면 같이 태우고, 아니면 혼자 태웁니다. JAVA 코드im..

Algorithm 2025.04.21

프로그래머스: 큰 수 만들기

문제주어진 숫자 문자열 number에서 k개의 숫자를 제거해 만들 수 있는 가장 큰 수를 구하는 문제입니다.예를 들어 number = "1924"이고 k = 2라면, 만들 수 있는 가장 큰 수는 "94"입니다. 문제 해결탐욕적(Greedy) 접근이 필요한 문제입니다.앞자리부터 가능한 한 큰 숫자를 남겨야 최종적으로 큰 수가 됩니다.이를 위해 Stack 자료구조를 활용하여 다음과 같은 조건으로 문자를 저장합니다:Stack이 비어있지 않고,k > 0이며,현재 스택의 top 숫자가 새로 들어올 숫자보다 작다면,스택의 top을 제거(pop)하여 더 큰 수가 앞으로 오도록 만듭니다.이 과정을 가능한 한 반복해야 하므로 while 루프로 구현합니다.Java 코드import java.util.*;class Solut..

Algorithm 2025.04.21

프로그래머스: 조이스틱

문제이름을 만들기 위해 조이스틱을 조작하는 최소 횟수를 구하는 문제입니다.조이스틱은 ▲(위), ▼(아래), ◀(왼쪽), ▶(오른쪽)으로 움직입니다.▲: A부터 Z로, ▼: Z부터 A로 변경목표 문자열은 알파벳 대문자로 이루어져 있고, 처음에는 모든 문자가 A로 되어 있음커서를 좌우로 이동하며 알파벳을 변경해 원하는 이름을 만들어야 함핵심위/아래 조작 (▲▼)각 문자마다 A에서 목표 문자로 바꾸기 위해 최소 몇 번 이동해야 하는지를 계산Math.min(name.charAt(i) - 'A', 'Z' - name.charAt(i) + 1) 를 사용해서 위로 가는 경우와 아래로 가는 경우 중 더 작은 값 사용좌/우 조작 (◀▶)단순히 오른쪽으로만 이동하면 length - 1번이 필요하지만,중간에 A가 연속되는 ..

Algorithm 2025.04.21