로그인이 필요한 기능입니다

코들리를 사용하시면서 불편했던 사항이나,
개선이 필요한 사항이 있으면 의견을 보내주세요.
여러분의 소중한 의견을 신중히 검토하여
서비스 개선에 적극 반영하도록 하겠습니다.

로그인이 필요한 기능입니다

프로젝트 생성을 위해선 로그인을 해야합니다.

알고리즘이란?

1. 알고리즘의 어원에 대해서 알아볼까요?

9세기 페르시아엔 아부자파 모하메드 이븐 무사 알 콰리지미(Abu Ja'far Mohammed ibn Musa al Khowarizimi) 라는 긴 이름의 사람이 있었어요. 이 사람은 수학, 천문학, 지리학까지 섭렵한 당시의 최대 과학자였답니다. 긴 이름 끝의 '알 콰리지미 (al Khowarizimi)' 는 '콰라즘 마을에서 온' 이라는 뜻이에요.

인류 문명을 이렇게 발전시킨 놀라운 오늘날의 숫자! 간결하고도 쉬운 연산 기법을 통칭하는 이 알고리즘은 20세기 컴퓨터가 등장하며 '알고리즘적 사고' 는 빛을 발하게 돼요. 컴퓨터를 움직이는 프로그램은 모두 정교한 알고리즘을 기반으로 하고 있답니다!

알 콰라지미는 그리스와 인도의 다양한 지식을 종합해서 우리가 잘 알고 있는 산수와 대수를 발명했어요. 또, 우리가 알고 있는 산술(Arithmetics)에 대한 책을 집필하여 이것을 아랍인과 유럽인에게 소개하였죠. 유럽에서는 알 콰라지미가 전파한 대수를 '아라비아 수' 또는 '콰라즘에서 온 사람이 가르쳐 준 수 (알 콰라즘)' 라고 부르게 됩니다. 여기서 '알 콰라즘' 이 변하여 '알고리즘(algorithm)' 이 되었다네요.

2. 알고리즘이란 무엇일까요?

우리는 누구나 일상생활에서 다양한 문제 상황을 접하게 돼요. 알고리즘은 우리가 어떤 문제를 해결할 때 그 절차를 알기 쉽도록 기술하는 논리적인 절차과정을 의미해요. 이해하기가 아직은 조금 어렵죠? 자판기로 예를 들어 설명해볼게요. 자판기에서 음료수를 뽑아 마시고 싶을 때 우리는 어떤 행동을 하나요?

'화폐 넣기 > 음료수 선택 > 선택한 음료수 받기 > 잔돈이 있을 땐, 잔돈 받기' 이와 같은 과정을 통해 원하는 음료수를 뽑아서 마실 수 있게 되죠. 이렇게 방법을 나열한 것을 알고리즘이라고 하는 거에요. 간단히 말해 알고리즘이란, 어떤 일을 해결하려는 방법 및 절차랍니다.

좀 더 알아볼까요? 만약 오른쪽 그림처럼, 매일 지나가는 등굣길이 공사 중이라 다른 방법으로 학교에 가야 한다고 가정 해볼게요. 여러 갈림길 중 어떤 길과 교통수단을 선택했느냐에 따라서 도착 시각이 달라질 거에요. 길을 잘못 선택하면 평소보다 더 많은 시간과 비용이 들겠지만, 효율적으로 학교 가는 방법을 선택했다면 가장 이른 시간에 도착할 수 있겠죠? 알고리즘을 잘 알고 있다면 어떤 문제 상황에서도 좀 더 효율적으로 해결할 방법을 생각할 수 있게 됩니다.

똑같은 재료를 가지고 짧은 시간 안에 맛있는 음식을 만들 수 있는 요리 방법을 알고 있다면, 요리 방법을 몰랐을 때보다 훨씬 편안하고 즐겁게 요리를 할 수 있어요. 생활 속에서 발견할 수 있는 다양한 문제 상황 속에서 목적에 맞는 알고리즘을 효율적으로 찾아내는 연습으로 우리는 문제 해결력을 향상하고 창의적인 생각을 할 수 있게 될 거에요.

3. 알고리즘의 특성

일반적으로 알고리즘은 다음 조건들을 만족해야 해요.

입력
자료가 외부에서 제공될 수 있다.
출력
문제가 처리되면 반드시 하나 이상의 결괏값이 나와야 한다.
명확성
알고리즘의 각 단계는 무엇을 하기 위한 것인지 명확하게 정의되어야 한다.
유한성
알고리즘의 명령어대로 수행했을 때 주어진 값이 처리된 후 종료되어야 한다.
효과성
알고리즘은 효율적일수록 가치가 높다. 시간적, 공간적 효율성을 가져야 한다.