자료구조란?
자료구조란 데이터에 효율적으로 접근하고 수정할 수 있도록 저장/조직/관리하는 방법이론이다.
자료구조,알고리즘,프로그래밍,이산수학 관계도
자료구조를 공부해야 하는 이유
효율적인 데이터 관리와 사용을 위해 자료구조와 알고리즘을 공부해야한다.
자료구조를 도구로 빗대어 표현을 많이 하는데 10keyless 키보드와 일반 키보드를 비교하면 좋을것 같다.
텐키리스 키보드
- 장점
- 마우스의 움직임이 자유로워진다. - 단점
- 숫자칠때 불편하다
일반 키보드
- 장점
- 숫자칠때 편하다 - 단점
- 마우스 움직임이 상대적으로 불편해진다.
사람의 팔길이는 제한되기에 마우스와 키보드의 거리를 벌리더라도 사용가능한 영역은 제한되어있다.
마우스를 사용하는 게임을 할때는 텐키리스 키보드를 사용한다면 게임에 도움이되겠지만
키보드만 사용하는 게임을 한다면 별로 차이가 없을것이다.
하지만, 숫자를 많이 입력해야하는 액셀이나 기타등등 서류작업을 한다면 텐키리스는 정말 최악의 키보드가 될것이다.
이렇게 각각 장단점이 있기에 자신이 하는일에 대해 유리한 도구를 고르는데 자료구조 역시 같은 이치이다.
내가 관리 혹은 사용해야할 데이터의 특성,목적들을 파악하여 보다 효율성있는 자료구조를 택하려고 우리는 위 두가지를 공부해야 한다.
대표적인 자료구조의 종류
- 선형 자료구조 : 한줄로 배치된 구조
- 색인 자료구조 : 데이터를 효율적으로 찾기위한 구조 (검색어 필터인 elastic이 대표적)
- 효율적인 자료구조? : 우선순위를 다루는데 유용한 구조
- 관계 처리 자료구조 : 말그대로 관계를 표현하고 다루는데 특화된 구조
자료구조는 정해져있는것이 아닌 직접 만들어 낼수도있다.
말그대로 자료의 구조일 뿐이다. 본인에 목적에 부합한 자료구조를 만들어 낼 수 있다.
JAVA의 자료구조 컬렉션 패키지
알고리즘이란?
문제 해결 작업을 수행하기 위해 입력을 받아 출력을 만들어내는 과정을 기술한 것
알고리즘 표기법
알고리즘을 만들때는 원하는 출력을 만들어 내는 과정을 애매하지 않게 기술해야 한다.
- 자연어를 이용한 서술적 표현
- 사람이쓰는 자연어로 표현하는 방법
- 서술적이기도 하지만 쓰는사람에 따라서 일관성이나 명확성을 유지하기 어렵다. - 순서도를 이용한 도식화
- 알고리즘을 순서도(Flow chart)로 규칙에 따라 도식화하는 방법이다.
- 시각적 효과와 함께 흐름을 쉽게 파악할 수 있지만 복잡한 알고리즘을 표현하는데는 한계가 있다. - 프로그래밍 언어를 이용한 구체화
- 표현 자체가 구체화 되있어 덧붙여 구체화 하지않아도 되는게 장점이다.
- 해당 언어를 모르면 이해할 수 없기때문에 범용성은 떨어진다. - 가상코드를 이용한 추상화
- 실제 프로그래밍 언어는 아니지만 프로그래밍 언어와 유사한 가상코드를 사용하여 표기한다.
- 실제 언어가 아니라 작동할 순 없지만 구체화 할 수 있는 장점이있다.
'기초CS > 알고리즘' 카테고리의 다른 글
[Data Structure] Stack (0) | 2022.07.28 |
---|---|
[Data Structure] HashTable(Dictionary/HashMap) (0) | 2022.07.28 |
[Data Structure] Set (0) | 2022.07.28 |
[DataStructure]Linked List (0) | 2022.07.28 |
[DataStructure] Array/List (0) | 2022.07.28 |