알고리즘은 무엇일까?
요리를 만들때 특정한 순서와 방법을 따라야 맛있는 요리를 만들 수 있는 것처럼, 프로그램으로 복잡한 문제를 해결하려면 명확한 절차와 규칙이 필요합니다.
알고리즘
은 문제를 해결하기 위한 단계적인 절차를 뜻하며, 요리의 레시피와 같습니다.
프로그래밍에서 알고리즘이 중요한 이유
알고리즘은 프로그램의 효율성
과 정확성
을 결정짓는 중요한 요소입니다.
어떤 문제를 해결하기 위해서는 다양한 방법들이 존재할 수 있습니다.
알고리즘의 핵심은 여러 가지 해결 방법 중에서 더 빠르고, 더 적은 자원을 사용하는 최적의 방법을 찾는 것입니다.
알고리즘의 종류와 간단한 코드 예제
알고리즘은 그 목적과 기능에 따라 다양한 종류로 나뉩니다.
이번 수업에서는 대표적인 알고리즘 몇 가지를 소개하고, 간단한 코드 예제를 살펴보겠습니다.
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 출력
알고리즘은 문제를 해결하기 위한 단계적인 절차를 뜻한다.
가이드라인
AI 튜터
배포
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
실행 결과