알고리즘

원하는 요리를 실패 없이 완성하기 위해 단계별로 적어둔 요리 레시피예요.

정의 어떤 문제를 해결하거나 정해진 목표를 달성하기 위해 거쳐야 하는 명확한 순서와 규칙의 모음이에요. 컴퓨터는 사람처럼 스스로 융통성을 발휘하지 못하기 때문에, 시작부터 끝까지 한 단계도 빠짐없이 명확하게 정리된 순서가 있어야만 일을 정확하게 처리할 수 있어요.

라면 끓이기와 알고리즘

라면을 끓일 때 물 550ml를 냄비에 붓고, 불을 켜서 물이 끓으면 면과 분말스프를 넣고, 4분 30초 동안 더 끓인 뒤 불을 끄는 순서를 지켜요. 이처럼 어떤 목적을 달성하기 위해 차례대로 밟아가는 단계별 순서도가 바로 알고리즘이에요.

컴퓨터에게 일을 시킬 때도 똑같아요. 컴퓨터는 '물 적당히 붓고 맛있게 끓여줘'라는 두루뭉술한 지시를 전혀 알아듣지 못해요. 대신 '물을 550밀리리터 붓는다', '물이 100도에 도달하면 면을 넣는다'처럼 아주 구체적이고 순서가 분명한 규칙을 주어야 움직여요.

이러한 명령 순서가 중간에 하나라도 꼬이거나 빠지면 컴퓨터는 멈추거나 엉뚱한 결과를 내놓아요. 그래서 해결하려는 문제를 작은 단위로 쪼개고, 앞뒤 논리가 딱 들어맞도록 순서를 차근차근 정리하는 과정이 알고리즘 설계의 기본이에요.

라면 끓이기 순서로 이해하는 알고리즘 물 550ml 붓기 아니오 (대기) 물이 끓는가? 면과 스프 넣기 4분 30초 끓이기 라면 완성!

같은 문제도 푸는 방법에 따라 속도가 달라져요

두꺼운 사전에서 단어 하나를 찾을 때 첫 페이지부터 마지막 장까지 한 장씩 넘기며 찾는 방법이 있어요. 반면 사전을 딱 절반으로 펼친 뒤, 찾는 단어가 앞쪽에 있는지 뒤쪽에 있는지 확인하며 탐색 범위를 절반씩 줄여나가는 방법도 있죠.

두 방법 모두 결과적으로는 원하는 단어를 찾아내요. 하지만 걸리는 시간과 노력에는 엄청난 차이가 생겨요. 첫 번째 방법(순차 탐색)은 단어가 10만 개라면 최대 10만 번을 넘겨봐야 하지만, 절반씩 쪼개는 방법(이진 탐색)은 약 17번만 넘겨보면 바로 찾아낼 수 있거든요.

프로그래머들이 매일 더 좋은 알고리즘을 치열하게 연구하는 이유가 바로 여기에 있어요. 똑같은 기능을 하는 프로그램이라도 어떤 알고리즘을 사용하느냐에 따라 0.01초 만에 끝날 수도 있고, 며칠 동안 컴퓨터가 멈춘 채 돌아갈 수도 있기 때문이에요.

알고리즘 비교: 순차 탐색과 이진 탐색 순차 탐색 : 앞에서부터 하나씩 확인 77번 비교 필요 1 2 3 76 77 100 이진 탐색 : 범위를 절반씩 축소 단 7번 만에 발견! 1 100 50 ① 50 확인 75 ② 75 확인 77 ③ 77 발견!

조금 더 정확히 말하면

조금 더 정확히 말하면, 컴퓨터 과학에서 알고리즘이라고 부르려면 몇 가지 엄격한 기준을 통과해야 해요. 먼저 입력값을 넣으면 정해진 출력값이 나와야 하고, 각 단계의 설명이 모호하지 않고 명확해야 해요. 또한 실행 가능한 연산이어야 하며, 영원히 멈추지 않는 게 아니라 언젠가는 반드시 끝나는 '유한성'을 갖추어야 해요.

오늘날 우리가 매일 마주치는 유튜브나 넷플릭스의 영상 추천, 지도 앱의 실시간 최단 경로 안내도 모두 고도로 발달한 알고리즘의 작품이에요. 사용자가 과거에 시청한 기록과 체류 시간을 분석해 가장 만족할 만한 영상을 골라내거나, 수많은 도로의 교통 정보를 실시간으로 계산해 가장 덜 막히는 길을 찾아주는 식이죠.

결국 알고리즘은 단순히 복잡한 컴퓨터 코드가 아니라, 세상의 복잡하고 까다로운 문제를 가장 단순하고 논리적인 단계로 쪼개어 해결하는 생각의 기술이에요.

🤔 흔한 오해

✕ 오해

알고리즘은 인공지능이나 컴퓨터 프로그래밍에만 쓰이는 첨단 기술이다.

✓ 사실

알고리즘은 컴퓨터가 발명되기 훨씬 전부터 존재한 논리적 절차예요. 종이접기 설명서, 요리 레시피, 덧셈과 뺄셈을 하는 수학 계산법도 모두 알고리즘의 일종이에요.

🧺 일상에서 만나요

1 지도 앱이 실시간 교통 체증을 피해 가장 빠른 길을 안내해 주는 길 찾기 알고리즘
2 사전에서 원하는 단어를 찾을 때 범위를 절반씩 줄여가며 빠르게 찾는 이진 탐색 알고리즘
💡 그러니까 한마디로

알고리즘은 어떤 문제를 해결하기 위해 거쳐야 하는 명확한 순서와 규칙이에요.