본문 바로가기

Programming

(135)
[과제] 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
[Pandas] Basic operations: Series Pandas의 1차 목표는 서로 다른 여러 유형의 데이터를 Series와 DataFrame라는 공통의 format으로 정리하는 것이다. 또한 $import\; pandas\; as\; pd$로 import 해서 라이브러리 참조 시 $pd$로 참조하는 것이 일반적이다. Tuple, List, Dictionary 선언 Tuple: $TUPLE\_NAME = (e_1,\; e_2,\; [e_3,\; e_4],\; \cdots,\; e_n+$ List: $LIST\_NAME = [e_1,\; e_2,\; [e_3,\; e_4],\; \cdots,\; e_n]$ Dictionary: ${Key_1:Value_1,\; Key_2:Value_2,\; \cdots,\; Key_n:Value_n}$ * Dictionar..
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://github.com/Nahrim/Finder/tree/main/finder 군대에 있을 때 만든 프로그램이다. 사실 프로그램이라고 하기는 좀 민망한 수준이라 습작이라고 하는 게 더 맞는 것 같다... 이동식 저장장치 내의 압축파일을 찾아내기 위해 만들었다. 사실 밖에서는 딱히 쓸모가 없는데, 거기서는 꽤 유용했다. 내가 근무했던 곳에서는 외부에서 들여온 저장매체(CD, 외장하드, etc)의 유해성을 클린PC로 검사했다. 클린PC는 랜선이 꽂혀있지 않고 필요한 최소한의 프로그램만 깔려있는 PC다. 여기서는 악성코드나 바이러스가 나와서 다른 PC로 퍼질 염려가 없으니 여기서 유해성을 검사한 것이다. 검사라고 해봤자 별 거 없고 백신으로 정밀 검사만 돌리면 되는 거였는데, 이 백신이 문제였다. ..
재귀함수를 이용한 최소공배수 구하기 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..