일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 주간회고
- If
- 회고
- Real MySQL
- 2020년 일정
- 알고리즘
- Python
- 서평
- 2020년 정보처리기사 4회
- git
- 함수형 코딩
- sqldeveloper
- 정보처리기사
- 성적프로그램
- post
- 스터디
- Jackson
- LeetCode
- java
- 필기
- 뇌정리
- Til
- 미니프로젝트
- jsp
- algorithms
- hackerrank
- 2020년 제4회 정보처리기사 필기 문제 분석
- 항해99
- 책리뷰
- 코드숨
- Today
- Total
목록공부/알고리즘 (5)
조컴퓨터

1) 병합 병렬(merge sort) 이란? 재귀 용법을 활용한 정렬 알고리즘 - 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. - 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다. - 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. 2) 알고리즘 구현 ▼ 파이썬 - 어떤 데이터 리스트가 있을 때, 리스트를 앞뒤로 자르는 코드 작성해보기 (일반화) def split_func(data): medium = int(len(data) / 2) print(medium) left = data[:medium] right = data[medium:] print(left, right) - 재귀 용법 활용하기 다음 문장을 코드로 작성해보기 (merge 함수가 있다고 가정) * merge..
1) 퀵 정렬(quick sort) 이란? - 정렬 알고리즘의 꽃 - 기준점(pivot) 을 정해서, 기준점보다 작은 데이터는 왼쪽(left), 큰 데이터는 오른쪽(right) 으로 모으는 함수를 작성 - 각 왼쪽(left), 오른쪽(right) 은 재귀용법을 사용해서 다시 동일 함수를 호출하여 위 작업을 반복함 - 함수는 왼쪽(left) + 기준점(pivot) + 오른쪽(right) 을 리턴 2) 알고리즘 구현 ▼ 파이썬 def qsort(data): if len(data) data[idx]: left.append(data[idx]) else: right.append(data[idx]) return qsort(left) + [pivot] + qsort(right) 1. 만약 리스트의 갯수가 한 개이면 ..

1) 삽입 정렬(insertion sort) 이란? - 삽입 정렬은 두 번째 인덱스부터 시작 - 해당 인덱스 앞에 있는 데이터(왼쪽)부터 비교해서 인덱스 값이 더 작으면 데이터(왼쪽)을 해당 인덱스 값 뒤로 복사 - 이를 인덱스 값이 더 큰 데이터를 만날 때까지 반복, 그리고 큰 데이터를 만난 위치 바로 뒤에 인덱스 값을 이동 2) 알고리즘 구현 ▼ 파이썬 def insertion_sort(data): for idx in range(len(data) - 1): for idx2 in range(idx + 1, 0, -1): if data[idx2] < data[idx2 - 1]: data[idx2], data[idx2 - 1] = data[idx2 - 1], data[idx] else: break retu..

1) 선택 정렬(selection sort) 이란? 다음과 같은 순서를 반복하며 정렬하는 알고리즘 - 주어진 데이터 중에서 최소값을 찾음 - 해당 최소값을 데이터 제일 앞에 위치한 값과 교체함 - 제일 앞의 위치를 뺀 나머지 데이터를 동일한 방법으로 반복하여 교체함 2) 알고리즘 구현 ▼ 파이썬 def selection_sort(data): for stand in range(len(data) - 1): lowest = stand for idx in range(stand + 1, len(data)): if data[lowest] > data[idx]: lowest = idx data[lowest], data[stand] = data[stand], data[lowest] return data 1. for s..

1) 버블 정렬(bubble Sort) 이란? 두 인접한 데이터를 비교해서, 앞에 있는 데이터가 뒤에 있는 데이터 보다 크면 자리를 바꾸는 정렬 알고리즘 2) 알고리즘 구현 - n 개의 리스트가 있는 경우 최대 n-1 번의 로직을 적용한다. - 로직을 1번 적용할 때마다 가장 큰 숫자가 뒤에서부터 1개씩 결정된다. - 로직이 경우에 따라 일찍 끝날 수도 있다. 따라서 로직을 적용할 때 한 번도 데이터가 교환된 적이 없다면 이미 정렬된 상태이므로 더이상 로직을 반복 적용할 필요가 없다. ▼ 파이썬 // Python def bubblesort(data): for idx in range(len(data) - 1):// 반복 swap = False// 교환이 되었는지를 확인하는 변수 for idx2 in ran..