"이번에 유튜브 알고리즘이 이렇게 추천해 주던데?"
우리는 생활에서 '알고리즘'이라는 말을 자주 사용하곤 한다. 하지만 정작 알고리즘이 무엇인가 하고 묻는다면 대답하기가 곤란해진다. 그냥 추천해주는 거 아니야? 라는 대답도 들어보았다.
알고리즘의 사전적 의미는 다음과 같다.
알고리즘(Algorithm)은 수학과 컴퓨터과학, 언어학 또는 관련 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것, 계산을 실행하기 위한 단계적 절차를 의미한다.
즉, 어떠한 문제를 해결하기 위한 방법을 나열한 것이다.
생활에서, 혹은 시험에서 코딩을 할 때, 우리는 여러 방법을 마주할 수 있다. 알고리즘은 그런 방법을 모두 통틀어 정의하는 것이다. 예를 들면 1~100을 연속적으로 더하라고 한다.
대표적인 첫번째 방법으로 1부터 100까지 계속 더하는 것이 있을 것이다.
두번째 방법은, 가우스 덧셈을 이용하는 것이다. 첫번째 수와 마지막 수를 더한 101을 100번 곱하여 2로 나눈 것이다.
여기서 두 방법 모두 알고리즘에 속한다. 어쨌든 해결되는 방법이기 때문이다. 이때, 시간이 덜 걸리는 알고리즘, 용량이 덜 차지하는 알고리즘 등으로 나뉠 수는 있겠지만, 공통적으로 문제에서 요구하는 답안은 똑같이 찾을 수 있게 된다.
코딩에 있어 알고리즘은 매우 중요하다. 어떤 답을 구하기 위해서 적합한 알고리즘을 찾는 과정은 하루아침에 완성되지 않기 때문이다. 그렇기 때문에 여러 문제를 다양한 방법으로 풀어보는 것이 중요한 것이다.
그리고 알고리즘을 시각화 하는 것 또한 프로그래머에게 중요한 과업이라고 할 수 있다.
우리는 알고리즘을 설명하기 위해 flow chart라는 순서도 개념을 사용한다.
위키백과에 나오는 간단한 flow chart이다.
처음에는 귀찮은 과정이라고 생각할 수 있지만 flow chart를 통해 알고리즘을 도식화 하고, 설명을 용이하게 하면서 다른 이들의 이해를 도울 수 있는 것이다.
그래서 요즘같은 코딩시대에 개발자에게 필요한 기술 중 하나라고 생각한다.
프로그래밍을 공부하며 한 번씩 순서도를 그려보면 어떨까? 분명 습관화 된다면 좋은 설명이 될 것이며 발전 된 알고리즘이 나올 것이다.