포인트3 테크니컬 하우스

컴퓨팅 사고 2

황지섭May 18, 2024
2 min read|

들어가기 전에

컴퓨터는 입력된 정보를 어떻게 가공하여 출력하게 될까?
우리가 일상에서 다양한 문제를 해결하는 방식처럼
컴퓨터도 일련의 동작을 순서대로 실행하여 문제를 처리한다.

이런 일련의 동작을 정의하는 것이 바로 알고리즘이다.

알고리즘은 어떻게 정의될 수 있으며
그 정확성과 효율성에 대해 어떻게 평가할 수 있을까?

알고리즘의 이해

알고리즘은 입력(input)에서 받은 자료를 출력(output)형태로 만드는 처리 과정을 뜻한다.

간단히 말해,

알고리즘이란 입력값을 출력값의 형태로 바꾸기 위해

어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열이다.

그래서

이 명령들이 어떻게 배열되는지에 따라 알고리즘의 효율성이 결정되고

같은 출력값이라도 알고리즘에 따라 출력을 하기까지의 시간이 다를 수 있다.

정확한 알고리즘

예를 들어
전화번호부에서 특정 인물을 찾는 작업을 생각해보자.
가장 기본적인 방법은 전화번호부를 처음부터 끝까지 한 페이지씩 넘기며 찾는 것이다.
이 방법은 매우 정확하지만, 시간이 많이 걸리는 비효율적인 방법이다.

정확하고 효율적인 알고리즘

보다 효율적인 방법은 전화번호부를 절반으로 나누어 찾고자 하는 이름이

그 절반의 앞부분에 있는지 뒷부분에 있는지를 판단하고

해당 부분만을 다시 절반으로 나누어 찾는 것이다.

이 방법을 이진 검색이라고 하며

이는 매우 효율적인 알고리즘이다.

의사코드

알고리즘은 의사코드를 통해 더 명확하게 표현될 수 있다.
의사코드는 컴퓨터가 수행하야 하는 작업을 인간이 이해하기 쉬운 형태로 적은 코드이다.
의사코드는 프로그래밍 언어보다는 자연언어에 가까우며
알고리즘의 구조를 명확하게 설명하기 위해 사용된다.

예를 들어 위에서 언급한 이진 검색 알고리즘은 다음과 같은 의사코드로 표현될 수 있다.

전화번호부의 중간을 연다.
페이지를 확인한다.
만약 찾고자 하는 이름이 있다면 검색을 종료한다.
만약 찾고자 하는 이름이 앞쪽에 있다면 앞쪽 절반을 대상으로 1번부터 다시 시작한다.
만약 찾고자 하는 이름이 뒤쪽에 있다면 뒤쪽 절반을 대상으로 1번부터 다시 시작한다.
만약 더 이상 나눌 수 없다면 검색을 종료한다.

이처럼 알고리즘은 문제를 해결하기 위한 절차를 정의하는 것이며
그 효율성은 문제를 해결하는 데 소요되는 시간과 자원에 직접적인 영향을 미친다.

실습

Subscribe to our newsletter

Get the latest news and updates from our team