자료구조란?
by youngjun._.fastcampus의 '올인원 패키지 : 알고리즘 기술면접 완전 정복' 강의를 듣고 정리한 자료입니다.
https://www.fastcampus.co.kr/
자료구조란?
- 용어 : 자료구조, 데이터 구조, Data Structure
- 대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미
- 코드상에서 효율적으로 데이터를 처리하기 위해, 데이터 특성에 따라, 체계적으로 데이터를 구조화해야 함
어떤 데이터 구조를 사용하느냐에 따라 코드 효율이 달라짐
자료구조의 선택 기준
- 자료의 처리 시간
- 자료의 크기
- 자료의 활용 빈도
- 자료의 갱신 정도
- 프로그램의 용이성
자료구조의 특징
1. 효율성
자료구조를 사용하는 목적은 효율적인 데이터의 관리 및 사용이다.
따라서 적절한 자료구조를 선택하여 사용한다면 업무의 효율이 올라갈 것이다!
2. 추상화
추상화란 복잡한 자료, 모듈, 시스템 등으로 부터 핵심적인 개념만 간추려 내는 것이다.
자료구조를 구현할 때 중요한 것은 어느 시점에 데이터를 삽입할 것이며, 어느 시점에 이러한 데이터를 어떻게 사용할것인지에 대해서 초점을 맞출수 있기 때문에 구현 외적인 부분에 더 시간을 쏟을 수 있다. 알고리즘 자체에는 중점을 두지 않습니다.
마찬가지로 자료구조 내부의 구현보다 어떻게 사용해야 하는지를 알고 있어야한다.
3. 재사용성
자료구조를 설계할때 특정 프로그램에서만 동작하게 설계하지는 않는다. 다양한 프로그램에서 동작할 수 있도록 범용성 있게 설계하기 때문에 해당 프로젝트가 아닌 다른 프로젝트에서도 사용할 수 있다.
자료구조의 분류
자료구조는 크게 선형 자료구조와 비선형 자료구조로 나뉜다. 선형 자료구조의 경우 데이터가 일렬로 나열되어 있는 것을 뜻하고, 비 선형 자료구조는 특정한 형태를 띄고 있는 것을 뜻하는데, 각각에 해당하는 자료구조는 아래와 같다.
선형구조
- 배열(Array)
- 연결 리스트(Linked List)
- 스택(Stack)
- 큐(Queue)
비선형 구조
- 트리(Tree)
- 그래프(Graph)
알고리즘이란?
- 어떤 문제를 풀기 위한 절차/방법
- 어떤 문제에 대해, 특정한 '입력'을 넣으면, 원하는 '출력'을 얻을 수 있도록 만드는 프로그래밍
알고리즘의 조건
- 입력 : 외부에서 제공되는 자료가 0개 이상 존재한다.
- 출력 : 적어도 2개 이상의 서로 다른 결과를 내어야 한다.(즉 모든 입력에 하나의 출력이 나오면 안됨)
- 명확성 : 수행 과정은 명확하고 모호하지 않은 명령어로 구성되어야 한다.
- 유한성(종결성) : 유한 번의 명령어를 수행 후(유한 시간 내)에 종료한다.
- 효율성 : 모든 과정은 명백하게 실행 가능(검증 가능)한 것이어야 한다.
자료구조와 알고리즘이 중요한 이유
어떤 자료구조와 알고리즘을 쓰느냐에 따라 성능이 크게 달라진다!
Reference
https://andrew0409.tistory.com/148 [코인하는 프로그래머]
https://www.fastcampus.co.kr/[패스트캠퍼스]
블로그의 정보
개발하는만두
youngjun._.