더북(TheBook)

우리는 경험을 통해 배우고 경험으로부터 새로운 문제를 해결하는 방법을 찾습니다. 다양한 문제의 해결 알고리즘과 기술을 살펴봄으로써 비슷한 문제를 푸는 데 도움이 되는 패턴을 개발하게 됩니다.

알고리즘(algorithm)은 작업을 수행하는 절차의 집합을 의미합니다. 컴퓨터 프로그램에서 알고리즘은 입력으로부터 출력을 생성하는 절차의 집합입니다. 알고리즘을 알고 있다면 문제에 적절한 알고리즘을 적용해 원하는 결과를 빠르게 얻을 수 있습니다.

알고리즘의 가장 중요한 속성은 다음과 같습니다.

정확성(correctness) 알고리즘은 정확해야 합니다. 주어진 입력을 모두 처리하고 올바르게 출력해야 합니다.

효율성(efficiency) 알고리즘은 문제를 효율적으로 해결해야 합니다. 효율성은 두 가지 변수로 측정합니다. 첫째, 시간 복잡도(time complexity)는 알고리즘이 얼마나 빠르게 결과를 출력하는지 측정합니다. 둘째, 공간 복잡도(space complexity)는 원하는 결과를 얻기 위해 알고리즘이 메모리를 얼마나 사용하는지 측정합니다. 시간 복잡도는 입력 크기 n에 대한 시간을 함수 T(n)으로 표현하고, 공간 복잡도는 입력 크기 n에 대한 메모리 사용을 함수 S(n)으로 표현합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.