알고리즘이란?
평소에 “알고리즘”이란 말, 많이 들으시죠? 알고리즘이란, 어떤 문제를 해결하기 위한 자세한 방법입니다.
예를 들어 라면을 만들기 위해서는 냄비에 물을 끓이고, 라면 봉지를 뜯고, 스프와 건더기를 넣고, 면을 넣고, 4분 정도 기다리면 되는데요.
여기서 우리가 해결하고 싶은 문제는 라면을 끓이는 것이고, 방금 이야기한 해결 방법이 라면을 끓이는 문제에 대한 알고리즘입니다.
그런데 친구 하나는 스프랑 건더기보다 면을 먼저 넣어야 더 맛있다고 생각합니다. 또 다른 친구는 면을 익히는 중에 면을 살짝씩 위로 들어올려서 공기에 접촉시켜주면 면이 더 탱탱해진다고 주장하네요.
모두 목적은 같은데 방법이 조금씩 다릅니다. 같은 문제를 해결하기 위해서도 다양한 알고리즘이 존재하는 거죠.
좋은 알고리즘이란?
그렇다면 다양한 알고리즘 중에 좋은 알고리즘이란 무엇일까요? 좋은 알고리즘은 두 가지 조건을 충족시켜야 합니다.
- 문제를 해결하는 것.
- 문제를 더 잘 해결하는 것.
봉지를 뜯지도 않고 봉지째 물에 넣어버리면 라면이 제대로 조리되지 않습니다. 1번 조건을 충족시키지 못하기 때문에, 제대로된 알고리즘이 아닌 거죠.
그런데 라면을 잘 만들더라도 불을 약하게 하거나 해서 시간이 너무 오래 걸리면, 비효율적인 알고리즘이라고 할 수 있습니다. 이번에는 2번을 충족시키지 못하는 거죠.
짧은 시간 안에 라면을 맛있게 만드는 방식이, 라면 끓이기 알고리즘 중에 가장 좋다고 할 수 있겠네요.
컴퓨터 알고리즘이란?
라면 끓이기 알고리즘은 우리 일상에서의 알고리즘인데, 그렇다면 컴퓨터 알고리즘이란 무엇일까요?
컴퓨터 알고리즘이란, 컴퓨터가 어떤 문제를 해결하기 위해서 컴퓨터가 이해할 수 있는 방식으로 정리되어 있는 해결 방법입니다.
예를 들어서 컴퓨터가 자주 마주하는 “정렬”이라는 문제가 있습니다. 뒤죽박죽 섞여 있는 숫자들을 순서대로 배치하는 문제인데요.
[9, 4, 10, 3, 5, 8, 12, 1] # 뒤죽박죽
[1, 3, 4, 5, 8, 9, 10, 12] # 정렬됨
우리는 정확하고 효율적으로 숫자들을 정렬하는 알고리즘을 찾아내야 합니다.
그리고 이 알고리즘을 어떻게 구현하느냐? 당연히 프로그래밍을 이용해서 합니다. 그래서 프로그래밍과 알고리즘은 뗄래야 뗄 수 없는 관계인 거죠!
출처 코드잇
'Algorithm > 알고리즘 패러다임' 카테고리의 다른 글
공간 복잡도 (0) | 2023.07.09 |
---|---|
주요 시간 복잡도 정리 (2) | 2023.07.09 |
알고리즘 평가 주의 사항 (0) | 2023.07.09 |
정렬 알고리즘 비교 (0) | 2023.07.09 |
알고리즘이 바꾸는 세상 (0) | 2023.07.09 |