b14003. 가장 긴 증가하는 부분수열 5
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/14003 📌 자바(Java)로 푸는 가장 긴 증가하는 부분 수열 5 - 백준 14003 🔼LIS + 경로 추적을 O(N log N)으로 해결하는 대표 문제 🔎 문제 개요백준 14003번 - 가장 긴 증가하는 부분 수열 5 문제는수열이 주어졌을 때, 가장 긴 증가하는 부분 수열의 길이해당 부분 수열 자체 를 구하는 문제입니다.단, 수열의 길이가 최대 100만 개이므로 O(N²) 풀이 불가능합니다. 💡 예제 입력610 20 10 30 20 50 💡 예제 출력4 10 20 30 50 🛠 알고리즘 접근 방식 ✅ 핵심 전략: 이진 탐색 기반 LIS + 경로 추적 list[]: 현재까지 만든 LIS 수열 (값만 추적)dp[i]: arr..
b14002. 가장 긴 증가하는 부분수열 4
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/14002 📌 자바(Java)로 푸는 가장 긴 증가하는 부분수열 4 - 백준 14002 📈최장 증가 부분 수열(LIS)을 구하고, 해당 수열을 출력하라!🔎 문제 개요 백준 14002번 - 가장 긴 증가하는 부분 수열 4 문제는기본적인 LIS(최장 증가 부분 수열) 문제에👉 “LIS 경로까지 출력”이 추가된 버전입니다.💡 예제 입력6 10 20 10 30 20 50 💡 예제 출력4 10 20 30 50 🛠 알고리즘 접근 방식 이 문제는 기본 LIS 문제에서“LIS의 경로를 저장”해야 하기 때문에✔ 단순한 DP 배열뿐 아니라✔ prev[] (이전 인덱스), lastIndex[] (길이별 마지막 인덱스) 추적이 필요합니다. 🔹 핵심..
b12852. 1로 만들기 2
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/12852 📌 자바(Java)로 푸는 1로 만들기 2 - 백준 12852 🔢최소 연산 횟수 + 경로 추적까지 하는 DP 문제! 🔎 문제 개요 백준 12852번 - 1로 만들기 2 문제는정수 N이 주어졌을 때,1로 만들기 위해 사용할 수 있는 연산은 다음 세 가지입니다: X → X / 3 (3으로 나누어떨어질 때만)X → X / 2 (2로 나누어떨어질 때만)X → X - 1 최소 연산 횟수를 출력하고그 경로에 해당하는 숫자 순서도 출력해야 합니다. 💡 예제 입력10 💡 예제 출력310 9 3 1 🛠 알고리즘 접근 방식: Dynamic Programming (DP) ✏️ 핵심 전략 dp[i]: i를 1로 만들기 위한 최소 연산 횟수c..
b1450. 냅색문제
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/1450   📌 자바(Java)로 푸는 부분 수열의 합 문제 - 백준 1450 🎒 🔎 문제 개요 백준 1450번 - 냅색 문제는최대 N = 30개의 물건이 주어질 때,각 물건의 무게를 더해 총합이 C 이하인 경우의 수를 구하는 문제입니다. 1 ≤ N ≤ 30, 1 ≤ C ≤ 1e9무작정 모든 조합을 돌리면 2³⁰ ≈ 10억 개, 시간 초과 발생❌➡ 그래서 “Meet in the Middle(중간에서 만나기)” 전략을 사용합니다. 🛠 알고리즘 접근 방식: Meet in the Middle  ✏️ 핵심 전략 배열을 반으로 나누고 각각 가능한 부분합의 조합을 모두 구함한 쪽 배열의 조합을 기준으로, 나머지에서 더해도 C 이하가 되는 조합 개수를 ..
b3665. 최종순위
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/3665   📌 자바(Java)로 푸는 최종 순위 문제 - 백준 3665 🏆🔁 🔎 문제 개요 백준 3665번 - 최종 순위는 위상 정렬(Topological Sort)을 응용하는 문제입니다. 작년 순위가 주어지고,올해 바뀐 순위 정보들이 입력되며,그 정보를 바탕으로 올해의 최종 순위를 결정하는 문제입니다. 단, 순위를 정확히 하나로 정할 수 없다면 ? 출력모순이 발생해서 순위를 정할 수 없다면 IMPOSSIBLE 출력 💡 예제 입력155 4 3 2 122 43 1 💡 예제 출력5 3 2 4 1  🛠 알고리즘 접근 방식 이 문제는 기본 위상 정렬에✔ 순위가 바뀐 간선을 뒤집는 작업(reverse edge)✔ 정점 진입 차수(indegre..
Lv 4. 무지의 먹방 라이브
·
Algorithm & Data Structures/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/42891 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   📌 자바(Java)로 푸는 무지의 먹방 라이브 문제 - 프로그래머스 🍜⏱ 🔎 문제 개요 프로그래머스 Lv.4 - 무지의 먹방 라이브 문제는무지가 각 음식의 걸리는 시간만큼 음식을 순서대로 먹고,k초 후에 몇 번째 음식을 먹고 있어야 하는지를 구하는 문제입니다. 단, **음식 순서는 원형(끝나면 처음으로)**이고,시간이 부족하면 -1을 반환해야 합니다. 💡 예제 입력food_times = [3, 1, 2]k = 5 💡 예제 출력1➡ ..
b.2696 중앙값 구하기
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/2696   📌 자바(Java)로 푸는 중앙값 구하기 - 백준 2696 🔢 🔎 문제 개요 백준 2696번 - 중앙값 구하기 문제는여러 개의 수열이 주어졌을 때,각 수열마다 홀수 번째 수를 입력받을 때마다의 중앙값을 구하는 문제입니다. 입력 수열의 개수: T각 수열은 최대 10씩 끊어져 입력홀수 번째 수가 들어올 때마다 중앙값 출력 💡 예제 입력191 2 3 4 5 6 7 8 9 💡 예제 출력51 2 3 4 5  🛠 알고리즘 접근 방식 이 문제는 대표적인 중앙값(Median) 유지 문제로,**최대 힙(왼쪽 절반) + 최소 힙(오른쪽 절반)**을 사용하여 중앙값을 효율적으로 관리합니다.  ✏️ 핵심 아이디어 left: 최대 힙, 중앙값보다 ..
Lv 2. 택배 배달과 수거하기
·
Algorithm & Data Structures/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/150369 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   📌 자바(Java)로 푸는 택배 배달과 수거하기 - 프로그래머스 🚚📦 🔎 문제 개요 프로그래머스 Lv.2 - 택배 배달과 수거하기 문제입니다.트럭이 정해진 용량(cap)만큼 배달/수거를 하며 모든 집에 물건을 배달하고 수거하려고 합니다.왕복 이동 거리의 최솟값을 구하는 것이 목표입니다. 💡 예제 입력cap = 4, n = 5deliveries = [1, 0, 3, 1, 2]pickups = [0, 3, 0, 4, 0] 💡 예제 ..
b.2075 N번째 큰 수
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/2075   📌 자바(Java)로 푸는 N번째 큰 수 문제 - 백준 2075 🧮 🔎 문제 개요 백준 2075번 - N번째 큰 수 문제입니다.N x N 크기의 행렬이 주어졌을 때, 모든 수를 정렬했을 때 N번째로 큰 수를 구하는 문제입니다. • 단순 정렬로 풀 수 있지만, 효율적인 풀이가 중요합니다. • 메모리 제한과 시간 제한을 고려하면 우선순위 큐 사용이 더 적절합니다. 💡 예제 입력512 7 9 15 513 8 11 19 621 10 26 31 1648 14 28 35 2552 20 32 41 49💡 예제 출력35➡ 모든 수 중 5번째로 큰 수(내림차순 정렬 기준)는 35 🛠 접근 방식 현재 코드는 모든 값을 배열에 넣고 정렬한 뒤 ..
Lv 3. 광고 삽입
·
Algorithm & Data Structures/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/72414  📌 자바(Java)로 푸는 광고 삽입 문제 - 프로그래머스 📺📊🔎 문제 개요 프로그래머스 Lv.3 - 광고 삽입 문제입니다.하루 동안의 동영상 재생 기록(logs)이 주어졌을 때,광고를 삽입할 시작 시간을 정해서, 전체 광고 누적 시청 시간을 최대화하는 문제입니다.💡 예제 입력play_time = "02:03:55"adv_time = "00:14:15"logs = [ "01:20:15-01:45:14", "00:40:31-01:00:00", ...]💡 예제 출력"01:30:59"➡ 해당 시각에 광고를 삽입했을 때 광고 누적 시청 시간이 최대가 되는 시각을 반환🛠 알고리즘 ..