본문 바로가기

Programming/과제

(10)
[과제] Dynamic programming 1. N을 1, 2, 3의 합으로 나타내기 예를 들어 $N=5$면 다음과 같이 나타낸다. $4$ $= 1 + 1 + 1 + 1$ $= 1 + 1 + 2$ $= 1 + 2 + 1$ $= 2 + 1 + 1$ $= 2 + 2$ $= 1 + 3$ $= 3 + 1$ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public static int solve(int n) { int[] a = new int[n]; a[0] = 0; a[1] = 1; a[2] = 1; a[3] = 2; //from idx=4 to idx=n for(int i = 4; i
[과제] Divide and conquer 이번 과제는 분할정복 알고리즘으로 문제를 해결하는 것이었다. 1.a 정렬 후 회전된 배열에서 최대값 찾기 1) 내 답안 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public static int max(int[] arr, int from, int to) { if(from > to) return -1; int mid = (from + to) / 2; if(arr[from] > arr[mid]) { int m = max(arr, from + 1, mid); return (m > arr[from]) ? m : arr[from]; } else if(arr[mid] > arr[to]) { int m = max(arr, mid + 1, to); return (m > arr..
Pancake sorting by Recursion 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 import java.util.Arrays; public class PancakeSort { public static void main(String[] args) { int len = 10; int[] arr = new int[len]; //Random initialization for(int i = 1; i 0) { sort(arr, beginIdx - 1); } int m = minIdx(arr, beginIdx); if(m != beginIdx) { ..
재귀호출을 이용한 최소값 찾기, 총합 구하기, 선택 정렬 1. 최소값 찾기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import java.util.Arrays; public class Minimum { public static void main(String[] args) { int len = 10; int[] arr = new int[len]; for(int i = 1; i
Pancake sorting by Iteration 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 import java.util.ArrayList; import java.util.List; public class PancakeSort { public static void main(String[] args) { List list = new ArrayList(0); int len = 10; //Randomly in..
재귀함수를 이용한 최소공배수 구하기 https://t0pli.tistory.com/147에서도 했지만 https://t0pli.tistory.com/171을 해보고 더 좋은 방법이 생각나 다시 풀었다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 import java.math.BigInteger; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { System.out.println(run()); } public static String run() { List list = n..
재귀함수를 이용한 최대/최소값 구하기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import java.math.BigInteger; import java.util.ArrayList; import java.util.List; public class Temp { public static void main(String[] args) { List list = new ArrayList(0); for(int i = 1; i 1) ? max(list.subList(1, list.size()), list.get(0)) : list.get(0); return (val.compareTo(retVal) > 0) ? val : retVal; } } Colored by Color Scripter cs https://..
엑셀 컬럼명 암호? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 import java.math.BigInteger; public class Q004 { public static void main(String[] args) { System.out.println(digitsToAscii(39574640)); //CHOPIN } public static String digitsToAscii(long n) { StringBuilder sb = new StringBuilder(); do { char c = (char)('A' + (26L + (n%26L) - 1L)%26L); sb.append(c); if(c == 'Z') --..