최근 포스트

[Python] heapq 모듈

2 분 소요

파이썬에서 우선순위 큐 알고리즘을 구현할 수 있도록 제공하는 내장 모듈(공식 문서)이다. 다만, 이 모듈은 최소 힙만을 지원한다. 따라서 최댓값을 찾아야 하는 경우는, 이 모듈을 응용하여 다른 방식으로 활용해야 한다. 개요 파이썬이 설치되어 있다면, 다음과 같이 간단하게 임...

[Algorithm] 병합정렬

4 분 소요

여러 정렬된 자료의 집합을 병합해ㅔ 한 개의 정렬된 집합으로 만듦.

[Algorithm] 카운팅정렬

3 분 소요

카운팅 정렬(a.k.a 계수 정렬) 원소를 직접 비교하지 않고, 원소들의 개수를 세어 정렬하는 방식이다. 즉, 항목의 순서를 결정하기 위해 집합에 각 항목이 몇 개씩 있는지 센다. 이미지 출처 : https://m.blog.naver.com/PostView.nhn?blogI...

[Algorithm] 퀵정렬

4 분 소요

개요 분할 정복 방식을 적용해 정렬을 진행하는 알고리즘이다. 정렬 알고리즘 계의 최고 존엄격으로, 매우 효율적이다. 원리 리스트 중 하나를 피봇으로 선택하고, 피봇보다 작은 원소는 왼쪽에, 큰 원소는 오른쪽에 정렬한다. 이후 피봇값을 중심으로 리스트를 분할하고, 분할된 각각의...

[Algorithm] 삽입정렬

1 분 소요

개요 자료 내 모든 원소들을 앞에서부터 차례대로 이미 정렬된 부분과 비교하여, 자신의 위치를 찾아냄으로써 정렬을 완성하는 알고리즘이다. 도서관 사서가 책을 정렬할 때 일반적으로 활용되는 정렬 방식이다. 사람의 머리로 이해하기는 간단하지만, 코드로 구현했을 때 효율성이 떨어진다....

[Algorithm] 선택정렬

1 분 소요

선택 정렬 선택 정렬은 주어진 자료 중 가장 작은(혹은 가장 큰) 값의 원소부터 차례대로 선택하여 위치를 교환해 나간다. 학교 다닐 때 키순서대로 줄을 섰던 것을 떠올리면 된다. 가장 작은(혹은 가장 큰) 수부터 정렬하기 시작하여 위치를 교환하는 정렬 알고리즘이다. 이를 적용하...

[Algorithm] 버블정렬

1 분 소요

개요 인접한 두 원소를 비교하며 자리를 계속해서 교환해 나가는 정렬 방식이다. 매우 직관적이나, 그만큼 비효율적이다. 원리 각 단계마다 다음과 같은 과정을 거친다. 단계별로 모든 원소에 대해 인접한 두 값을 비교한다. 앞의 값이 뒤의 값보다 크다면(혹은 작다면) 자...

[Algorithm] 동적 계획법

4 분 소요

알고리즘 스터디 DP팀 발표 내용 및 SW Expert Academy 동적 계획법 강의 내용을 참고하였습니다. 정의 동적 계획법(Dynamic Programming)은 최적화 문제를 해결하는 알고리즘이다. 그리디 알고리즘과 비슷하게, 이 알고리즘 역시 문제를 해결하기 ...

[Data Structure] 연결 리스트(Linked List)

9 분 소요

연결 리스트란, 각 노드가 데이터와 포인터를 가지고 연결되어 있는 방식으로 데이터를 저장하는 자료 구조이다. 데이터를 담고 있는 노드들이 포인터를 통해 서로 연결된다.