분류 전체보기84 조합구하기 (DFS, 메모이제이션) import java.util.*; // 조합의 경우수 (메모이제이션) // 5C3 = 4C2 + 4C3 // r==0, n==r -> 1 break // 2C1같은 값이 한번 더 나오면 배열(dy)에서 메모이제이션한 값 가져오기 class Main{ int[][] dy = new int[35][35]; //배열에 저장하기 메모이제이션 public int DFS(int n, int r){ if(dy[n][r] > 0) return dy[n][r]; //메모이제이션 값 리턴 if(n==r || r==0)return 1; else { return dy[n][r] = DFS(n-1, r-1)+DFS(n-1, r); // DFS 재귀값에 저장하기 } } public static void main(String[].. 2024. 2. 5. 동전교환 (DFS) import java.util.*; // 중복순열이랑 비슷함 // DFS이나 가지수가 n개 일 때 class Main{ static int n, m, answer = Integer.MAX_VALUE; // answer가 최소값이 되어야함. public void DFS(int L, int sum, Integer[] arr){ // 사용된 동전 개수, L개의 동전으로 만든 총합 if(sum > m) return; // sum이 m값을 넘는 것을 방지 if(L>= answer) return; // 현재 answer의 min값보다 더 탐색할 필요 없음 if(sum == m) { answer = Math.min(answer, L); }else { for(int i=0; i 2024. 2. 5. 인프런 - LRU import java.util.*; class Main { public int[] solution(int size, int n, int[] arr){ int[] cache=new int[size]; for(int x : arr) { int pos = -1; //인덱스 번호 for(int i=0; i=1; i--) { //맨뒤부터 cache[i] = cache[i-1]; // 숫자 당겨주기 } cache[0] = x; } else{ // hit for(int i=pos; i>=1; i--) { // 해당 인덱스부터 cache[i] = cache[i-1]; // 숫자 당겨주기 } cache[0] = x; } } return cache; } public static void main(String[] args).. 2024. 1. 30. 인프런 - 삽입정렬 import java.util.*; class Main { public int[] solution(int n, int[] arr){ for(int i =1; i=0; j--){ // i-1값부터 0까지 if(arr[j]>tmp) arr[j+1] = arr[j]; // j값이(i-1) i보다 작으면 arr 뒤로 밀기 else break; } arr[j+1] = tmp; } return arr; } public static void main(String[] args){ Main T = new Main(); Scanner kb = new Scanner(System.in); int n=kb.nextInt(); int[] arr=new int[n]; for(int i=0; i 2024. 1. 30. 인프런 - 버블정렬 import java.util.*; class Main { public int[] solution(int n, int[] arr){ for(int i=0; i 2024. 1. 30. 인프런 - 선택정렬 import java.util.*; class Main { public int[] solution(int n, int[] arr){ for(int i=0; i 2024. 1. 30. 이전 1 2 3 4 5 6 ··· 14 다음