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[] (길이별 마지막 인덱스) 추적이 필요합니다. 🔹 핵심..
b1300. K번째 수
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/1300   이문제를 처음 접했을 때 int[][] 배열에 모두 채워넣은뒤그 수들을 int[] 에 집어넣고 이분탐색을 통해 풀어야 하나 라는 생각을 갖게되었다.하지만 조건중 N의 범위가 100000임을 알게되었고 이방법은 안되는 것을 깨닫고 열심히 노가다를 시작   열심히 메모장에 적어가며 공식이나 규칙을 발견하려 하였지만생각해낸건 '구구단인데? ' 까지였고 다른 블로그의 도움을 받아 이분탐색을 활용한 풀이법에 도달할 수 있었다. 우선 내가 알고있던 이분탐색은 오름차순으로 정렬된 배열에서 left 와 right를 활용하여 mid를 선정하고mid값과 목표값을 비교하여 작다면 right는 mid-1이 되고크다면 left가 mid+1이되어 값을 찾아나가..
b7453. 합이 0인 네정수
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/7453   4 개의 배열 a,b,c,d 가 있을 때 N개의 원소의합이 0이되는 조합의 수를 찾는 문제다.N의 범위가 4000 즉 4000*4000*4000*4000 을 하게되면 쉽게 풀수 있으나시간복잡도 측면에서 시간초과가 날것이 분명하기에풀이방법을 이분탐색을 이용하여 A,B의 배열에서 가능한 조합 16000000개와 C,D의 배열에서 가능한 더한 조합 16000000개를 만들어 두조합의 합이 0이되는경우를세기로 하였다. AB의 배열에서가능한 조합 A와 CD의 배열에서 가능한 조합 B를 순회돌기전 정렬을 통해 A,B배열을 오름차순으로 정렬하고 A의 원소중 -31,-31,-31 처럼 중복되는 경우가 생기면 이를 upperbound lowerboun..
p.퍼즐게임챌린지
·
Algorithm & Data Structures/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/340212 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   이 문제는 이분 탐색을 활용해 난이도 조정을 통해 주어진 시간 제한 안에서 플레이 가능한 최소 레벨을 구하는 문제를 해결한다. solution 메서드는 난이도의 범위를 설정하고, 이분 탐색을 통해 해당 레벨에서 플레이 시간이 조건을 만족하는지를 검사하며최적의 레벨을 찾는다.calculate 메서드는 특정 레벨에서 플레이 시간을 계산하는 함수다.난이도가 레벨보다 높은 경우, 난이도 차이만큼 추가 플레이 시간이 발생하며,이 시간은 현재 및 이..
2776. 암기왕 (Java)
·
Algorithm & Data Structures/BOJ
이분탐색의 기초적인 예를 들 수있는 문제이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class b2776 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st ; StringBuilder sb = new StringBuilder(); int ..