[ C.S 지식 정리 : 자료 구조 ] 자료구조 & 알고리즘의 정의.
∇ CS지식 정리 _ 자료구조 : 자료구조 & 알고리즘의 정의.
목 차
1. 자료구조란?
2. 효율적으로 데이터를 관리하는 예
3. 알고리즘이란?
4. 자료구조와 알고리즘이 중요한 이유
Ⅰ. 자료구조란?
◎ '자료구조' == '데이터구조' == Data Structure
● 대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미합니다.
● 코드상에서 효율적으로 데이터를 처리하기 위해서, 데이터 특성에 따라 체계적으로 데이터를 구조화해야 합니다.
==>> 어떤 데이터 구조를 사용하느냐에 따라서, 코드 효율이 달라집니다.
◎ '자료구조' 란, 컴퓨터 과학에서
데이터를 효과적으로 관리하고 효율적으로 접근하고 조작 가능하도록 저장하는 방법을 의미합니다.
=> 데이터를 좀 더 효율적으로 이용하고, 더 빠르게 작업을 처리하고, 더 적은 자원을 사용 가능하도록 합니다.
▷ 자료구조는 다양한 형태가 있는데, 이들은 각기 다른 목적과 사용 용도에 따라서 설계되었습니다.
▷ 기본적인 자료구조로는 배열(array), 연결리스트(linked list), 스택(stack), 큐(queue), 트리(tree),
그래프(graph), 해시 테이블(hash table) 등이 있습니다.
ex) 배열은 동일한 유형의 요소들을 연속적인 메모리 공간에 저장하며, 인덱스를 통해 각 요소에 빠르게 접근 가능
연결 리스트는 동적으로 메모리를 할당 받아서 데이터를 저장하고, 각 노드가 다음 노드를 가리키는 방식으로 구성.
이는 데이터의 삽입이나 삭제를 쉽게 할 수 있도록 해줍니다.
☆ 사용하려는 앱의 특성과 필요성에 따라 적절한 자료구조를 선택하는 것이 중요합니다.
Ⅱ. 효율적으로 데이터를 관리하는 예시.
◇ 우편 번호 지정
== 5자리 우편번호로 국가의 기초 구역을 제공합니다.
ex) 5자리 우편번호에서 앞 3자리는 시,군, 자치구를 표기, 뒤 2자리는 일련번호로 구성.
◇ 학생 명부 관리
== 학년, 반, 번호를 학생에게 부여해서 학생부를 관리.
ex) xx학년, x반, x번 학생.
-> 이렇게 지정하지 않으면, 전교생 중 특정 학생을 찾기 위해, 전체 학생 리스트를 모두 훑어야 함.
Ⅲ. 알고리즘이란.
● 어떤 문제를 풀기 위한 절차/방법.
● 어떤 문제에 대해, 특정한 '입력'을 받으면, 원하는 '출력'을 얻을 수 있도록 만드는 프로그래밍.
◎ '알고리즘' 이란
문제를 해결하기 위한 일련의 명확한 절차나 방법을 의미합니다.
-=>> 알고리즘은 주어진 입력에서 시작하여, 정해진 규칙에 따라서 작업을 수행하고
최종적으로는 출력값을 생성합니다.
▷ C.S 에서 알고리즘은 데이터를 분석하거나 조작하는 데 사용되는 기본적인 절차입니다.
ex) 정렬 알고리즘은 데이터를 특정 순서로 배치하는 데 사용되며,
검색 알고리즘은 데이터 세트에서 특정 항목을 찾는 데 사용됩니다.
▷ 알고리즘이 효율적인지 여부는 주로 '시간 복잡도'와 '공간복잡도'를 통해 판단합니다.
- 시간 복잡도는 알고리즘이 문제를 해결하는데 필요한 시간을 의미하고
- 공간 복잡도는 알고리즘이 문제를 해결하는데 필요한 메로리를 의미합니다.
▷ 알고리즘을 설계할 때는 문제를 정확하게 해결하는 것 뿐만 아니라,
가능한 한 적은 시간*공간을 사용하여 해결하는 것이 중요합니다.
Ⅳ. 자료구조와 알고리즘이 중요한 이유.
◆ 어떤 자료구조와 알고리즘을 사용하느냐에 따라서, 성능이 천지차이 !
▷ 자료구조와 알고리즘은 컴퓨터 과학의 핵심 구성 요소로,
프로그램이나 소프트웨어를 효과적으로 작성하는 데 매우 중요합니다.
1. 효율성 측면.
- 올바른 자료구조와 알고리즘 선택은 소프트웨어의 성능에 큰 영향을 미칩니다.
- 데이터를 빠르고 효율적으로 처리할 수 있으며, 이는 유저에게 더 나은 경험을 제공 가능하고
소프트웨어가 제한된 리소스 내에서 더 많은 작업을 수행할 수 있게 합니다.
2. 문제 해결 능력.
- 자료구조와 알고리즘은 문제 해결에 필수적입니다.
- 복잡한 문제를 분석하고 이해하는 데 도움이 되며, 문제 해결에 대한 핵심 원칙과 패턴을 제공합니다.
3. 재사용성.
- 고전적인 자료구조와 알고리즘은 대부분 재사용 가능한 솔루션을 제공합니다.
- 이미 해결된 적 있는 문제에 대한 솔루션을 반면교사 삼아서 새로운 문제에 적용 가능합니다.
4. 추상화.
- 알고리즘은 문제의 복잡성을 추상화하고, 문제 해결을 위한 단계별 절차를 제공합니다.
- 개발자가 더 복잡한 문제에 집중하도록 해주며, 문제의 해결을 단순화하고 가독성 있는 코드 작성에 도움.
5. 확장성.
- 효율적인 자료구조와 알고리즘은 소프트웨어를 확장하고 유지 관리하는 데에 도움이 됩니다.
- 큰 규모의 데이터와 복잡한 계산을 처리할 수 있는 능력은 현대 SW 시스템에서 매우 중요합니다.
'면접준비[프론트,백,데이터,CS] > CS 정리' 카테고리의 다른 글
[ C.S 지식 정리 : 자료 구조 ] 자료구조 : ArrayList (0) | 2024.12.17 |
---|---|
[ C.S 지식 정리 : 자료 구조 ] 자료구조 : 배열 (Array) (1) | 2024.12.13 |
[ C.S 지식 정리 : 자료 구조 ] 배열(Array) & 연결-리스트(LinkedList) (0) | 2024.11.16 |
[ C.S 지식 정리 : 자료 구조 ] 알고리즘 공부 하기 전 필요한, 자료구조 기초 지식들. (0) | 2024.11.16 |
[ C.S 지식 정리 : 자료 구조 ] 자료구조와 알고리즘, '시간 복잡도' 에 대한 이해 (Big-O 표기법) (3) | 2024.11.02 |