알고리즘(Algorithm)이란?
단순한 의의 자체만 보면 문제를 해결하는 일련의 과정을 모두 알고리즘이라고 본다.
라면 끓이기를 예로 들어보자.
물 넣고 끓으면 면과 스프를 넣고 면을 익힌다.
이 과정을 알고리즘의 의의에 대입하면
문제 == 라면 끓이기
문제를 해결하는 일련의 과정 == 물 넣고~
가 되는 것이다.
하지만 알고리즘은 실제로 이렇게 간단하지 않다.
우리가 말로써 하지 않은 너무 당연한 과정들이 컴퓨터에게는 그렇지 않기 때문이다.
지금 당장 라면 끓이기만 봐도 그렇다.
우리는 너무 당연하게 냄비를 꺼내서 물을 넣고,
너무 당연하게 가스불을 켜고,
너무 당연하게 물이 끓는지 눈으로 알 수 있고,
너무 당연하게 라면과 스프봉투를 뜯고,
너무 당연하게 냄비에 라면과 스프를 넣어서,
너무 당연하게 면이 다 익었는지 알 수 있다.
하지만 컴퓨터는 그렇지 않다.
모든 흐름을 파악하고, 이를 어떻게 해결할지 옳은 과정을 생각할 수 있어야한다는 얘기이다.
또한 문제는 이뿐만이 아니다.
우리가 알고리즘을 배우는 이유, 그것은
옳은 과정 != 효율적인 처리
이기 때문이다.
우리가 컴퓨터를 이용하여 대신 계산을 맡기는 이유가 무엇이던가
방대한 양의 계산을 정확히, 그리고 빠르게 해결하기 위함이다.
하지만 옳기만 한 과정은 정확할 순 있어도, 빠를 순 없다(물론 인간에 비하면 말도 안되게 빠르지만)
라면 끓이기를 다시 생각해보자.
우리는 라면을 끓일 때,
너무 당연하게 가스 화력을 최대로 켠다.
그 이유가 무엇일까?
너무 당연하게도 그것이 가장 빠르기 때문이다.
이를 문제를 해결하기 위한 효율로 생각한다면 가장 큰 화력이 가장 효율적임을 알 수 있다.
따라서 우리가 알고리즘을 공부하는 이유는 컴퓨터에게 정확하면서 빠른 계산을 명령하기 위함이다.
Areian Project 커리큘럼 (2024-01-30 수정)
1. Areian Project 소개글 Areian Project 소개글 이름이 살짝 중2병에 걸린 것 같지만, 어릴적부터 사용하던 활동명 Areian(아리안)에 블로그로 공부글을 작성하는 것도 하나의 프로젝트로 생각하기에 만
areian0511.tistory.com