분류 전체보기
-
DP(동적 계획법)알고리즘 2023. 12. 17. 16:08
ex) 최대, 최소, 방법의 개수, 미래의 계산이 앞선 계산 결과에 영향을 받을 때 (1) 크고 복잡한 문제를 하위 문제로 나눈다. (2) 하위 문제에 대한 답을 계산한다. - 중복 하위 문제 - 계산 결과를 저장해서 중복된 문제에 사용 (3) 하위 문제에 대한 답으로 원래 문제에 대한 답을 계산한다. 상향식(bottom-up) 방법 - 반복문 public class DynamicProgrammingExample { // 다이나믹 프로그래밍을 활용한 피보나치 수열 계산 public static int fibonacci(int n) { int[] dp = new int[n + 1]; // 초기값 설정 dp[0] = 0; dp[1] = 1; for (int i = 2; i
-
java로 구현한 dfs와 bfs 코드(백준 1260번, DFS와 BFS)알고리즘 2023. 12. 13. 20:50
- dfs : 파라미터 = (그래프, 현재값, 방문한 list) -> 재귀 이용 - bfs : 파라미터 = (그래프, 현재값) -> 큐 이용 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; import java.util.Queue; import java.util.String..
-
stream API + 람다식자바 2023. 12. 12. 19:23
Stream API 사용 3단계 - Stream 생성(소스) - Stream 중개 연산(0개 이상): 스트림에 대한 작업이 결과적으로 또 다른 스트림을 생성. 파이프 필터 패턴 적용 - 지정된 조건을 만족하는 다른 스트림 생성해서 반환 - Stream 최종 연산 int[] values = {1,2,3,4,5,6}; Arrays.stream(values).filter(v -> v%2 ==0).sum(); 주요 Stream API - map() : 객체를 다른 객체로 변환하는 기능. - filter() : 조건에 따른 연산 수행 List numbers = Arrays.asList("1","2","3","4","5"); List even = numbers.stream() .map(s -> Integer.val..
-
annotation 종류자바 2023. 12. 11. 18:42
- lombok @NoArgsConstructor : 기본 생성자. People p = new People(); @AllArgsConstructor : 모든 멤버 변수 자동 초기화 @Getter : 모든 멤버 변수값을 반환하는 변수당 1:1 메소드 @Setter : 모든 멤버 변수값을 새로운 데이터로 초기화하는 변수 당 1:1 메소드 @ToString : 모든 멤버 변수값 결합해서 하나의 문자열로 반환하는 재정의 메소드. public String toString(){} @RequiredArgsConstructor : 선별해서 원하는 멤버변수만 초기화 가능한 동적 parameter 생성자 생성 @NonNull : @RequiredArgsConstructor 와 매핑, 선언된 멤버 변수만 초기화하는 생성자 ..
-
백준 22862번: 가장 긴 짝수 연속한 부분 수열(large)코테 풀이 2023. 12. 4. 23:08
문제 길이가 N인 수열 S가 있다. 수열 S는 1 이상인 정수로 이루어져 있다. 수열 S에서 원하는 위치에 있는 수를 골라 최대 K번 삭제를 할 수 있다. 예를 들어, 수열 S가 다음과 같이 구성되어 있다고 가정하자. 수열 S : 1 2 3 4 5 6 7 8 수열 S에서 4번째에 있는 4를 지운다고 하면 아래와 같다. 수열 S : 1 2 3 5 6 7 8 수열 S에서 최대 K번 원소를 삭제한 수열에서 짝수로 이루어져 있는 연속한 부분 수열 중 가장 긴 길이를 구해보자. 입력 수열 S의 길이 N와 삭제할 수 있는 최대 횟수인 K가 공백으로 구분되어 주어진다. 두 번째 줄에는 수열 S를 구성하고 있는 N개의 수가 공백으로 구분되어 주어진다. 출력 수열 S에서 최대 K번 원소를 삭제한 수열에서 짝수로 이루어져..
-
Dictionary - 가장 긴 연속된 수열알고리즘 2023. 12. 3. 19:58
수열 nums의 원소로 만들 수 있는 가장 긴 연속된 수열의 크기를 구하시오. input: nums = [100, 4, 200, 1, 3, 2], output: 4 input: nums=[0, 3, 7, 2, 5, 8, 4, 6, 0, 1], output: 9 import java.util.HashMap; public class MostLongSeq { public static int returnNum(int[] nums) { HashMap map = new HashMap(); for(int i : nums) { map.put(i, ""); } int max = 0; for(int i=0; i