728x90 전체 글188 백준 2839 JAVA DP 설탕 배달 https://www.acmicpc.net/problem/2839 5kg과 3kg에 최소의 포대를 사용해서 넣어야 함.5kg을 최대한 많이 넣어야 좋음. 1. 설탕이 5의 배수인지 살펴보고, 배수이면 몫이 정답. 2. 설탕이 3미만인지 본다. 3kg포대가 최소 용량이기 때문에 -1을 리턴한다. 3. 3kg 포대에 하나 채우고, 나머지 설탕을 다시 1번부터 시작해본다. 18kg일 경우 18 -> 5의 배수 아님 / -3 (포대+1) -> 15 -> 5의 배수임 (포대 + 15/5 ) = 1 + 3 = 4 import java.io.*;public class Main { public static void main(String[] args) throws IOException { Buffe.. 2025. 4. 22. [JAVA/dp]백준 1463 : 1로 만들기 https://www.acmicpc.net/problem/1463 1. 주어진 수 n이 1이 되기 위한 최소 경로의 수를 담아주는 배열 지정. dp[n] = x 면 n이 1이 되기 위한 최소 경로의 수 x를 뜻함. 그렇기 때문에 dp의 길이는 dp[n+1] 로 지정해야함.(0이 들어가니까) 2. dp[0] 과 dp[1]은 0이 됨. 3. 2부터 n까지 반복(n포함) 4. 처음 dp[i]는 전의 경로의 수에서 +1 한 만큼 (i-1 +1 = i 이기 때문에 ) 설정해줌 (-1 수식 반영)dp[i] = dp[i-1]+1 5.2로 나눠지는지 3으로 나눠지는지에 따라서 나눈 몫의 경로의 수 + 몫까지 간 경로 1 dp[i] = dp[i/2] + 1 6. 4번과 5번의 경로의 수를 비교하여 작은 수를 대입해줌.. 2025. 4. 22. 이분탐색 입국심사 JAVA 프로그래머스 코딩테스트 https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr import java.util.*;class Solution { public long solution(int n , int[] times){ long answer = 0; Arrays.sort(times); //오름차순 정렬 long min = 1; long max = (long)times[times.length-1]*2; //배열의 마지막(가장 긴 시간)*대기인원.. 2025. 3. 21. 프로그래머스 동적계획법 사칙연산 JAVA 어려움 https://school.programmers.co.kr/learn/courses/30/lessons/1843 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 연산자를 제외한 숫자의 개수int n = (arr.length + 1)/2; 예를들어 1 + 3 - 5 + 7 - 8 가 있으면arr.length = 9(9+1)/2 = 51, 3,5,7,8 => 5개 2. 뺄샘 연산이 비대칭이기 때문에 maxDP 와 minDP 를 따로 저장해야 한다.MAX- MIN 과 MIN - MAX는 다름5-3 과 3-5 는 다른것처럼 int[][] maxDP = new int[n][n];int[][] minDP.. 2025. 3. 14. 동적계획법(Dynamic Programming) 도둑질 자바 https://school.programmers.co.kr/learn/courses/30/lessons/42897 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr class Solution { public int solution(int[] money) { int answer = 0; //바로 money로 받아오면 dp_first와 dp_second는 각각 money 배열을 새로운 배열로 복사하는 것이 아니라, // money 배열 자체를 가리키게 됩니다. 즉, dp_first, dp_second, money가 모두 같은 배열을 공유하게 됩니다. .. 2025. 3. 14. 프로그래머스 동적계획법(Dynamic Programming) 정수 삼각형 자바 https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 거쳐간 숫자의 최댓값을 구해야 하는데,위에서부터 밑으로 내려오면서 비교하면 복잡해진다. 어차피 최댓값 하나만 구하면 되기 때문에 밑에서부터 올라가면서 최댓값을 더해 마지막 꼭대기에 최댓값이 남도록 하자. 그럴려면 기존의 삼각형이 아닌,더한 값을 저장하는 빈 삼각형이 필요하다.빈 삼각형의 마지막 줄은 기존 삼각형과 동일하다. (베이스 동일) class Solution{ public int solution(int[][] triangle){ .. 2025. 3. 5. 프로그래머스 동적계획법(Dynamic Programming) N으로 표현 자바 https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. HashSet 8개를 가진 ArrayList를 만들어준다.(HashSet은 중복을 불허한다.)각각의 HashSet 은 숫자 n 개로 만들 수 있는 값을 다 담고 있다. 5가 주어졌을 때 1개로 만들 수 있는 숫자들 = 5 2개로 만들 수 있는 숫자들 = 5 + 5 or 5 -5 or 5*5 or 5/5 or 553개로 만들 수 있는 숫자들= 1개로 만들 수 있는 숫자 ( + - * / ) 2개로 만들 수 있는 숫자 .. 2025. 3. 5. 프로그래머스 코딩테스트 연습 탐욕법(Greedy) 단속카메라 JAVA https://school.programmers.co.kr/learn/courses/30/lessons/42884#qna 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr import java.util.*;class Solution { public int solution(int[][] routes) { int answer = 0; //진출지점 오름차순 정렬 Arrays.sort(routes, (o1,o2) -> o1[1] - o2[1]); int tmp = 0; for(int i=0; i rou.. 2025. 3. 5. 코딩테스트 연습 탐욕법(Greedy) 섬 연결하기 JAVA 1. 메인 메서드 public int solution(int n , int[][] costs){ int answer = 0; //cost 오름차순 정렬 Arrays.sort(costs,(o1,o2 -> o1[2] - o2[2]); //부모 노드 초기화 int[] parent = new int[n]; for(int i=0; i 2. 크루스칼 메서드public static int kruskal(int[][] costs, int[] parent){ int cost = 0; for(int i = 0; i 3. x의 부모를 찾는 find 메서드public static int find(i.. 2025. 3. 4. 프로그래머스 코딩테스트 연습 탐욕법 구명보트 JAVA 문제 설명무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다.예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다.구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다.사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작성해주세요.제한사.. 2025. 3. 4. 이전 1 2 3 4 ··· 19 다음 728x90