분류 전체보기
-
[Python] 병합 정렬(merge sort)Algorithm 2020. 5. 15. 16:47
분할 정복 알고리즘 중 하나로 병합 정렬(merge sort) 또는 합병 정렬이라고 부른다. 정렬되지 않은 전체 데이터를 하나의 단위로 분할한 후 분할한 데이터들을 다시 병합하면서 정렬하는 방식이다. 간단히 설명하자면, 큰 데이터를 하나의 작은 데이터로 쪼갠 후 정렬하면서 다시 합치는 것이다. 시간 복잡도는 O(n*logn)이다. 포인트 1. 분할: 배열이 하나의 원소가 될때 까지 절반으로 나눈다. 2. 병합: 분할된 각각의 원소를 비교하여 정렬된 배열을 만든다. Python Code def mergesplit(data): if len(data) left_point and len(right) > right_point: if left[left_point] > right[right_point]: merged..
-
[Python] 백준 1302번 베스트셀러Algorithm 2020. 5. 14. 22:07
가장 빈도가 높은 문자열 출력하기 포인트! collections 모듈을 사용하여 알고리즘을 구현하였다. from collections import Counter collections에 있는 Counter를 이용하여 각 데이터 마다의 빈도를 구하고 ex) Counter({'top': 4, 'kimtop': 1}) most_common()을 이용하여 데이터의 개수가 많은 순의 리스트를 구하여 가장 빈도가 높은 문자열을 출력하였다. ex) [('top', 4), ('kimtop', 1)] Python Code from collections import Counter n = int(input()) books = [] for _ in range(n): books.append(input()) books.sort()..
-
[Python] 삽입 정렬(Insertion sort)Algorithm 2020. 3. 26. 14:14
삽입 정렬이란? 데이터들 중 두 번째 값부터 시작해서 그 앞의 데이터들과 비교해서 알맞은 위치로 삽입하는 형태의 정렬 앞 원소보다 크고, 뒤 원소보다 작은 위치에 삽입한다. 즉, 선택된 값의 앞쪽 원소들은 이미 정렬되어 있다. 과정 삽입 정렬은 두 번째 인덱스부터 시작 해당 인덱스(key) 앞에 있는 데이터(x)부터 비교해서 key값이 더 작으면 x값을 뒤 인덱스로 복사 이를 key값이 더 큰 데이터를 만날때까지 반복 그리고 큰 데이터를 만난 위치 바로 뒤에 key값을 이동 특징 시간 복잡도는 O(N^2) 정렬이 어느정도 되어있는 상태에서는 삽입 정렬이 빠르다. 배열이 길어질수록 효율이 떨어진다. Python code def insertion_sort(data): for index in range(len..
-
[Django] admin 커스텀하기Web 2020. 3. 19. 15:43
Django tutorial(part7)을 진행하면서 Django의 admin을 커스텀하게 되었다. 전에 해본 경험이 있기에 그 때 해본것 이외의 것만 간단히 적어보았다. 이전에 했던 admin 커스텀은 아래에 참고로 남겨둔다. 2019/12/25 - [Web] - [Django] Admin site 커스터마이즈 하기 [Django] Admin site 커스터마이즈 하기 Django의 장점 중에 하나인 관리자(admin) 페이지를 더 잘 사용하기 위해서 admin.py 를 커스터마이즈 해보자! 다양한 기능이 있지만 우선 내가 사용해본 것 위주로 작성했다. Django의 기본 사용과 model 작성 관.. dev-lagom.tistory.com 1. fieldsets 특정 model object의 필드 순..
-
[Python] 선택 정렬(selection sort)Algorithm 2020. 3. 18. 16:14
선택 정렬이란? 정렬되지 않은 전체 자료 중에서 해당 위치에 맞는 자료를 선택하여 위치를 교환하는 정렬 방식 정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환해나가는 방식(오름차순일 경우) 과정 다음과 같은 순서를 반복하며 정렬하는 알고리즘 1. 주어진 데이터 중 최소값을 찾는다. 2. 해당 최소값을 데이터 맨 챂에 위치한 값과 교체한다. 3. 맨 앞의 위치를 뺀 나머지 데이터를 동일한 방법으로 반복한다. selection sort 특징 자료 이동 횟수가 미리 결정된다. 값이 같은 레코드가 있는 경우에 상대적인 위치가 변경될 수 있다. 코드가 간단하고 적은양의 데이터에서 효과적이다. 시간복잡도는 O(n^2)이다. Python Code def selection_sort(dat..
-
[Python] 버블 정렬(Buble sort)Algorithm 2020. 3. 15. 20:06
Buble sort 두 인접한 데이터를 비교해서 앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 자리를 바꾸는 정렬 알고리즘 특징 시간 복잡도가 O(n²)로 느리다. 코드가 단순하여 자주 사용된다. Python Code def bubleSort(data): for index in range(len(data) - 1): swap = False for idx in range(len(data) - index - 1): if data[idx] > data[idx+1]: data[idx], data[idx+1] = data[idx+1], data[idx] swap = True if swap == False: break return data buble sort 확인하기 import random data_list =..
-
Typora에서 수식블록 사용하기Etc 2020. 3. 9. 19:11
.md 파일 작성 중 수식을 입력해야 했다. 그런데 수식을 입력하는 부분에 암기(?)를 해야 하는 부분이 있어서 그냥 기록을 해두고 나중에 필요한 부분을 찾아 사용하기로 했다. 더 많은 수식 사용법이 있지만 당장 내가 사용할법한 것들 위주로 기록했다. 사용법 본문 -> 수식 블록 click 단축키 Ctrl + Shift + M 수식 블록 블록안에 수식을 작성하면 된다. 수식 블록 Result 입력할 수식 \vec{a} \lVert a \rVert {\operatorname{d}!y\over\operatorname{d}!x} \sqrt{3} +, -, \times, \div \{\} \cdots \text{한글 작성하기} a^2 y_m a^{2+2} a_{i,j} \sum_{k=1}^n k^2 \frac{..
-
[scikit-learn] Iris 데이터를 이용한 머신러닝_KmeansAI 2020. 2. 25. 15:49
비지도학습이란 ? 지도학습과는 다르게 데이터에 대한 정답, 즉 라벨을 사용하지 않고 모델을 만들 수 있다. k-평균 군집화(K-means Clustering) ? 주어진 데이터를 k개의 클러스터로 묶는 알고리즘 각 클러스터와 거리 차이의 분산을 최소화하는 방식으로 동작한다. k는 클러스터의 중심 수를 의미한다. Iris 데이터에 관한 전처리는 미리 되어 있다는 가정하에 사이킷런을 이용한 군집화를 진행한다. 사이킷런 라이브러리의 k-평균 군집화 함수 불러오기 from sklearn.cluster import KMeans k 값을 의미하는 군집의 개수를 설정하기 k_means = KMeans(n_clusters=3) n_clusters는 k값을 의미하는 것으로 군집의 개수를 뜻한다. train 데이터를 이용..