프로그램은 알고리즘과 자료구조로 이루어져 있습니다.
알고리즘이란 주어진 특정한 일을 처리하기 위해 존재하는 유한한 수의 명령 집합입니다.
자료구조란 컴퓨터 시스템에서 효율적으로 데이터에 접근하고 조작하기 위한 자료들의 조직, 관리, 저장을 의미합니다.
Program = Algorithm + Data Structure
알고리즘과 자료구조 사이의 관계를 파악하기 위해선 먼저 문제 해결의 과정이 어떻게 이루어지는지를 알아야 합니다.
문제를 해결하는 주요 순서는 다음과 같습니다.
<문제 해결 순서>
1. 문제를 정의한다.
2. 알고리즘을 디자인 혹은 구체화한다.
3. 알고리즘을 분석한다.
4. 구현합니다.
5. 실험을 진행한다.
6. 유지 보수한다.
문제를 해결하기 위해선 위와 같이 크게 6가지의 단계를 거치게 됩니다.
1. 문제를 정의한다는 것은, 우리가 해결해야 하는 것이 무엇이며 조건들은 어떤 것이 있는지 파악하는 것입니다.
2. 알고리즘을 디자인 혹은 구체화하는 것은 말, 의사 코드(pseudo-code), 다이어그램(diagram) 등을 이용하여 문제를 해결하는 일련의 과정을 결정하는 것입니다. 입력 값은 어떤 것이며 출력 값은 어떠한 값이어야 하며 이 계산 과정은 명료하며 그 과정이 무한정 반복되지는 않고 효율적인가를 확인해야 합니다.
이 알고리즘의 효율성이라는 것에서 자료구조와의 관계가 드러납니다.
흔히 말하는 알고리즘의 시간 복잡도는 연산의 수와 관련이 있습니다. 그리고 연산을 할 때 필요한 피연산자들에 접근하는 것이 알고리즘의 수행 속도에 있어 중요하기에, 적합한 자료구조가 필요합니다.
알고리즘과 적합한 자료구조는 효율성을 증대시킵니다.
3. 알고리즘을 분석하는 것은 두 가지를 고려하는 것입니다. Space Complexity & Time Complexity. 얼마나 많은 저장 공간을 필요로 하는지 그리고 알고리즘을 수행하는데 걸리는 시간은 얼마나 걸리는지를 파악하여 그 결과에 따라 알고리즘을 재구성하게 될 수도 있습니다.
4. 구현한다는 것은 알고리즘을 코드로 옮기는 작업입니다. 프로그래밍 언어와 맞는 제작 툴 등을 고려하며, 깔끔하고 명료한 코드를 짜도록 합니다.
5. 실험을 진행하는 단계는 다양한 자료들을 가지고 항상 예상한 결과가 나오는지를 확인합니다.
6. 유지 보수를 하는 과정은 사용자와 오류 수정 그리고 다른 버전끼리의 호환성 등을 고려하여 진행합니다.
'Computer Science(학업내용 정리) > 자료구조' 카테고리의 다른 글
자료구조 - List (0) | 2020.04.03 |
---|