31.1 알고리즘
알고리즘(풀이법)이란 프로그래밍을 할 때 생긴 문제의 해결 방법을 체계적으로 정리한 것이라고 볼 수 있습니다. 주어진 문제를 어떻게 풀이하는지에 따라 문제를 해결할 수도 있고 그렇지 못할 수도 있습니다. 이러한 이유로 프로그램 작성에서 알고리즘은 중요한 자리를 차지합니다.
• 알고리즘은 ‘문제 해결 능력’입니다.
• 프로그램의 가장 작은 단위는 일반적으로 입력(input) → 처리(process) → 출력(output) 단계를 거치는데, 여기에서 처리 단계가 알고리즘 단계라고 생각하면 됩니다.
• 입력: 자료 구조(data structure)가 담당하는 영역입니다. 간단히는 변수 및 배열의 데이터를 사용하고 나아가서는 컬렉션, 파일, 데이터베이스의 데이터를 사용하는 영역입니다.
• 처리: 알고리즘 처리 영역입니다.
• 출력: 화면에 보이는 UI(User Interface)를 담당하는 영역입니다. 일반적으로 콘솔, 데스크톱, 웹, 모바일 등 영역으로 나누어서 가공된 데이터를 출력합니다.
가장 처음에 배워야 하는 학습용 알고리즘은 다음과 같습니다. 주어진 자료를 가지고 가장 큰 값을 구하거나(최댓값), 가장 작은 값을 구하거나(최솟값), 합을 구하거나(누적합), 자료 수를 구하거나(횟수, 건수), 평균을 구하거나(평균), 순서대로 정렬하는(정렬) 것 등입니다. 표 31-1에 필자가 알고리즘 입문용으로 가장 적합하다고 생각하는 내용을 정리해 보았습니다.