본문으로 건너뛰기
실습하기

알고리즘은 무엇일까?

요리를 만들때 특정한 순서와 방법을 따라야 맛있는 요리를 만들 수 있는 것처럼, 프로그램으로 복잡한 문제를 해결하려면 명확한 절차와 규칙이 필요합니다.

알고리즘문제를 해결하기 위한 단계적인 절차를 뜻하며, 요리의 레시피와 같습니다.


프로그래밍에서 알고리즘이 중요한 이유

알고리즘은 프로그램의 효율성정확성을 결정짓는 중요한 요소입니다.

어떤 문제를 해결하기 위해서는 다양한 방법들이 존재할 수 있습니다.

알고리즘의 핵심은 여러 가지 해결 방법 중에서 더 빠르고, 더 적은 자원을 사용하는 최적의 방법을 찾는 것입니다.


알고리즘의 종류와 간단한 코드 예제

알고리즘은 그 목적과 기능에 따라 다양한 종류로 나뉩니다.

이번 수업에서는 대표적인 알고리즘 몇 가지를 소개하고, 간단한 코드 예제를 살펴보겠습니다.


1. 검색(Search) 알고리즘

검색 알고리즘은 데이터에서 특정 값을 찾는 방법을 말합니다.

기본적인 예시로 선형 검색(Linear Search)이 있습니다.

선형 검색 예시
def linear_search(arr, target):
# 리스트의 길이만큼 반복
for i in range(len(arr)):
# 타겟 값과 일치하는 경우
if arr[i] == target:
# 해당 인덱스 반환
return i
# 일치하는 값이 없는 경우 -1 반환
return -1

numbers = [3, 5, 2, 1, 10]
result = linear_search(numbers, 5)
print(result) # 5가 위치한 인덱스 1 출력

선형 검색 알고리즘은 리스트의 처음부터 끝까지 순차적으로 탐색하며, 타겟 값과 일치하는 값을 찾으면 해당 인덱스를 반환합니다.


2. 정렬(Sorting) 알고리즘

정렬 알고리즘은 데이터를 일정한 순서대로 정리하는 방법입니다.

기본적인 정렬 알고리즘으로 버블 정렬(Bubble Sort)이 있습니다.

버블 정렬 예시
# 버블 정렬 함수
def bubble_sort(arr):
# 리스트의 길이
n = len(arr)
# 리스트 길이만큼 반복
for i in range(n):
# 리스트 길이에서 i만큼 뺀 범위까지 반복
for j in range(0, n-i-1):
# 현재 원소가 다음 원소보다 크면
if arr[j] > arr[j+1]:
# 두 원소의 위치 변경
arr[j], arr[j+1] = arr[j+1], arr[j]
# 정렬된 리스트 반환
return arr

# 정렬할 리스트
numbers = [64, 34, 25, 12, 22, 11, 90]

# 정렬된 리스트 출력
print(bubble_sort(numbers))

버블 정렬 알고리즘은 인접한 두 원소를 비교하여 정렬하는 방식으로, 리스트의 길이만큼 반복하면서 정렬을 수행합니다.


3. 재귀(Recursion) 알고리즘

재귀 알고리즘은 문제를 더 작은 문제로 쪼개어 해결하는 방법입니다.

대표적으로 피보나치 수열을 계산하는 방법에 재귀 알고리즘을 사용합니다.

재귀 알고리즘 예시 - 피보나치 수열
def fibonacci(n):
# n이 1 이하인 경우
if n <= 1:
return n
# n이 2 이상인 경우
else:
# n-1번째와 n-2번째 피보나치 수열의 합 반환
return fibonacci(n-1) + fibonacci(n-2)

result = fibonacci(6)

print(result) # 8 출력

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!