세상에 이상을 더하다.

지금, Rooti와 함께라면.

Rooti는 상상을 만드는 공방입니다.

Lecture/Algorithm 2

버블 정렬 (코드업 1441: 버블 정렬)

버블 정렬 알고리즘은 매우 비효율적이며 시간이 오래 걸리는 알고리즘이지만, 이해하기 쉽고 직관적이어서 첫 번째로 가져왔습니다. 버블 정렬을 헝가리 무용으로 표현한 영상입니다. 오름차순으로 정렬하려는 상황을 생각하겠습니다. 1번째와 2번째 원소를 먼저 비교합니다. 2번째 원소가 1번째 원소보다 더 크면 서로를 바꿉니다. 2번째와 3번째, ... n-1번째와 n번째까지 계속 이것을 수행합니다. 이 과정을 시행 1회라고 부르겠습니다. 그리고 위 시행을 n번 반복하면 됩니다. 하지만, 횟수를 더 줄이려면, 1번째 시행에서는 n번째까지, 2번째 시행에서는 n-1번째까지, ... , n-1번째 시행에서는 2번째까지만 탐색(크기 비교 및 교체)해도 됩니다. 왜냐하면, 버블 정렬은 앞에서부터 차례대로 연속된 두 원소를..

Lecture/Algorithm 2023.01.21

알고리즘 : 문제를 해결하는 가장 좋은 방법이 무엇일까

Introduction 알고리즘은 문제를 해결하기 위한 일련의 절차를 의미합니다. 특히 컴퓨터과학에서 많이 쓰이는 용어이기도 하죠. 프로그래밍에서의 알고리즘은 대개 일반화된 문제들에 대해 이미 정형화되어 명명된 절차를 일컫습니다. 어떤 문제를 해결할 수 있는 알고리즘이 여러 개 있을 수 있고, 또 하나의 문제를 해결하는 데에 여러 알고리즘이 쓰이기도 합니다. 문제에 대응하는 적합한 알고리즘의 선택은 연산 시간을 획기적으로 단축해 주거나 혹은 문제에 대한 해답의 정확도를 높여주기도 합니다. 지금부터 이 강의에서는 이들의 매커니즘을 소개하고 실제 코드를 통해 풀어내 보려 합니다. 온라인 프로그래밍 저지 사이트(백준, 혹은 코드업)의 문제를 예제로 참조하겠습니다.

Lecture/Algorithm 2023.01.21