Postgresql & lunchy 설치 출처: https://www.moncefbelyamani.com/how-to-install-postgresql-on-a-mac-with-homebrew-and-lunchy/ 요약: Mac에서 homebrew를 이용해 postgresql을 설치 하고 Lunchy를 사용해서 postgresql을 시작, 정지할 수 있도록 한다. lunchy가 복잡한 시작 명령어를 간결하게 해준다. 설치후 DB를 생성하고 접속해야 한다.MacBook-Pro:~ USERNAME$ createdbMacBook-Pro:~ USERNAME $ psqlpsql (9.6.2)Type "help" for help. USERNAME=# This is a quick guide for installing..
Tomcat 설치후 실행을 했더니 다음과 같은 에러가 발생!!! java.net.MalformedURLException: Local host name unknown:내가 뭘 잘못했니 왜 나만안되니...ㅠㅠ울면서 검색해본결과 /etc/hosts 파일에 hostname이 localhost로 설정되지 않아서 그렇다고함.확인을 위해서 cat /etc/hosts 명령어를 실행그런데 왜죠... 넘나 이쁘게 localhost가 잘 써있는데... 나는 왜 안되는거죠?? MacBook-Pro:~ USERNAME$ cat /etc/hosts### Host Database## localhost is used to configure the loopback interface# when the system is booting. ..
1. 순차 탐색 (Sequential Search)- 순차적으로 하나씩 비교- 따라서 입력 값 만큼 비교가 이루어짐 O(n) 2. 이진 탐색(Binary Search)- 정렬된 데이터를 반씩 쪼개서 데이터가 들어있는 쪽을 재귀함수를 이용해 다시 검색- 분할 정복 알고리즘으로 문제가 1/2으로 감소하기 때문에 O(logn)이 된다. 3. 이진 탐색 트리 (Binary Search Tree)- 이진 탐색을 적용한 이진 트리.- 하나의 노드는 0-2개의 자식 노드를 갖을 수 있으며, 자식 노드 중 왼쪽에는 작은 값, 오른쪽에는 큰 값이 온다. - 한쪽으로 치우져친 (사향 트리) 트리의 경우 최악의 시간 복잡도를 갖는다. O(n)- 평균적으로 O(logn)의 시간 복잡도를 갖는다.
12345678910111213141516171819202122232425262728293031 public static void convertDecimalToBinary(int number){ String res = ""; System.out.println(toBinaryString(number)); while (number >= 1){ res = number % 2 + res; number = number >> 1; } System.out.println(res); } public static void convertDecimalToOctal(int number) { String res = ""; System.out.println(toOctalString(number)); while (number > 0..
거품 정렬 (Bubble Sort)- 인접한 두 수를 비교, 뒤의 값이 작을 경우 swap, 값이 클 경우 다음 인접한 두 수를 비교 하여 정렬하는 방식 Java 구현12345678910111213141516171819202122232425public class BubbleSort { public void bubbleSort(int a[]) { if(a.length
퀵 정렬 (Quick Sort)정의- 분할 정복 알고리즘에 속하지만 실제로는 정복후 분할하는 알고리즘.- 피봇(pivot)을 기준으로 왼쪽에는 피봇 값보다 작은 값이 오고 오른쪽에는 큰 값이 오도록 정렬한다. 그리고 피봇을 기준으로 분할하여 각각 왼쪽, 오른쪽을 재귀 함수를 이용해 정렬한다. Java 구현1234567891011121314151617181920212223242526272829303132333435363738394041public class QuickSort { public void quickSort(int[] data, int first, int last){ int left = first; int right = last; int pivot = data[(first + last)/2]; /..
분할정복 알고리즘 (Divide - and - Conquer)정의- 문제의 입력을 분할하여 subproblem을 만든 후 해를 구하는 알고리즘을 subproblem에 적용하여 계산, 해 취합하여 본 문제의 해를 구하는 알고리즘- 분할은 더이상 할 수 없을때까지 진행 한다.- 분할 횟수 구하기 (k): n(입력)은 계속 2등분되며 1개가 될때까지 분할을 진행 한다. 따라서, n/2^k = 1 이고 k = log2n이다. 종류 (문제가 a개로 분할, 크기가 1/b로 감소) a=b=2 : 합병정렬, 최근접 점의 쌍 찾기, 공제선 문제 a=3, b=2: 큰 정수의 곱셈a=4, b=2: 큰 정수의 곱셈a=7, b=2: 스트라센의 행렬 곱셉 알고리즘a=2, b=일정하지 않음: 퀵 정렬a=2, b=2, 하나의 sub..
출처: https://joshuajangblog.wordpress.com/ (번역) 알고리즘을 쉬운 영어로 : 시간 복잡도와 Big-O 표기오늘 번역글은 medium 의 freecodecamp 글입니다. 알고리즘, 시간 복잡도, Big-O 를 사례를 들어가며 이해하기 쉽게 풀어서 설명된 글입니다. 원문 의 모든 부분을 번역하지는 않습니다. 주요 부분만 발췌하여 번역합니다.서론모든 개발자는 자신만의 시간 관념이 있습니다. 개발자들은 대부분의 시간을 사용자들에게 쏟아붓기 때문에, 최대한 시간을 효율적으로 사용하고 싶어하죠. 시간복잡도 를 최소화 함으로써 이게 실현가능해집니다.프로그래밍에서 시간복잡도를 이해하기 전에, 먼저 이 시간복잡도가 알고리즘에서 흔하게 활용된다는 사실을 기억해야합니다.그래서 알고리즘은 ..
Euclid 알고리즘을 사용하여 최대 공약수 구하기 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152class Euclid{ // division-based version public int getGCD1(int num1, int num2) { if(num1 * num2