자료구조 공부의 필요성

피아노위고양이·2023년 1월 29일
0
  • 자료구조 공부의 필요성
  • 자료구조의 종류
  • 자료구조와 알고리즘의 관계
  • 알고리즘의 시간복잡도

자료구조 공부의 필요성

무작정 개발에 뛰어들어 여러 프로젝트를 진행하면서, 각 프로젝트의 요구사항에 맞춰 개발을 하던도중 점점 드는 생각은 '이게 맞나?' 라는 의문이 계속 들었다.

복잡한 요구사항을 전달받을때, 주먹구구식으로 개발하는 것은 항상 이해하기 어려운 코드들이 작성되었고, 이는 또한 유지보수하기 어려운 결과로 이어졌다.

이러한 결과를 예방하기 위해선 개발을 시작하기전에 데이터 설계가 중요하다고 생각 되었고,

그래서 시작하게 된 자료구조 공부를 이곳에 기록하기로 했다.

자료구조의 종류

자료구조란 일차원적인 컴퓨터 메모리를 현실에 대응하도록 만들어 놓은 구조라고 할 수 있다.

즉, 현실에 대응하여 전산화 시킬수 있도록 만들어 놓은 구조이다.

자료구조에는 단순구조, 선형구조, 비선형구조 로 세가지 카테고리로 나눌수 있다.

단순구조는 정수, 실수, 문자열, 논리

선형구조는 스택, 큐, 배열, 연결리스트

비선형구조는 트리, 그래프가 있다.

간단하게 설명하면
선형구조는 한 원소 뒤에 하나의 원소가 나열된 구조라고 할수 있고,

비선형 구조는 다대다 관계로 망형, 계층적 구조라고 할 수 있다.

자료구조와 알고리즘의 관계

자료구조는 일차원적인 컴퓨터 메모리를 현실에 대응하도록 만들어 놓은 구조 라고 하면 알고리즘은 무엇이고 무슨관계가 있을까

Algorithm(알고리즘 또는 알고리듬)은 어떤 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것. 문제풀이에 필요한 계산절차 또는 처리과정의 순서다.

보통 자료 구조가 선택되면 그에 적용할 알고리즘은 거의 명확해진다. 즉, 자료 구조가 효율적인 알고리즘을 사용할 수 있게 함으로 자료 구조와 알고리즘은 매우 밀접한 관계를 가질 수밖에 없다.

알고리즘의 시간복잡도

시간복잡도란

입력값의 변화에 따라 연산을 실행할 때, 연산 횟수에 비해 시간이 얼마만큼 걸리는가 를 의미한다.

다시 문제상황으로 돌아와서

복잡한 요구사항을 전달받았고 이를 컴퓨터 데이터 구조로 표현하기 위해, 자료구조를 정할 것 이다. 그럼 어떤 기준으로 자료구조를 정해야 할까

효율적인 설계를 위해선 알고리즘의 시간복잡도가 낮은 설계를 해야할 것이다.

시간복잡도를 나타내는 표현으로는 빅오 표기법이 있다

빅오 표기법은 다음 게시물에 게시하도록 할 예정이다.

Reference

0개의 댓글