알고리즘이란 입력을 원하는 출력으로 변환하는 유한하고 잘 정의된 단계의 순서입니다. 우리는 알고리즘을 두 가지 축으로 평가합니다. 정확성(항상 올바른 답을 만들어 내는가?)과 효율성(시간과 메모리를 얼마나 사용하는가?)입니다.
개념
유효한 알고리즘은 명확(각 단계가 분명함)하고, 유한(반드시 종료됨)하며, 모든 유효한 입력에 대해 올바른 결과를 만들어 내야 합니다.
예시
python
# 리스트에서 최댓값 찾기
def find_max(nums):
if not nums:
return None # 빈 입력 처리
largest = nums[0]
n nums[:]:
n > largest:
largest = n
largest
find_max([, , , ])
이 알고리즘은 각 원소를 한 번씩만 방문합니다.
복잡도
- 시간: O(n) — n개의 원소를 한 번 순회합니다.
- 공간: O(1) — 추가 변수 하나만 사용합니다.
언제 중요한가 / 함정
같은 문제라도 비용이 서로 다른 여러 알고리즘이 존재합니다. 항상 엣지 케이스(빈 입력, 원소 하나, 중복값)를 확인하세요 — 정확성이 깨지는 곳은 대개 여기입니다.
왜 중요한가
알고리즘은 소프트웨어에서 문제 해결의 핵심입니다.
두 프로그램이 같은 답을 내더라도 하나가 다른 하나보다 수천 배 빠를 수 있습니다.
정확성 그리고 효율성의 관점에서 사고하는 것이야말로 테스트 케이스에서만 동작하는 코드와 대규모 환경에서도 동작하는 코드를 구분 짓습니다.
또한 이는 기술 면접과 시스템 설계 논의에서 공유되는 언어이기도 합니다.
