면접준비[프론트,백,데이터,CS]/CS 정리

[ C.S 지식 정리 : 자료 구조 ] 자료구조 & 알고리즘의 정의.

안다미로 : Web3 & D.S 2024. 12. 13. 15:29

 

 

 

 

[ 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 시스템에서 매우 중요합니다.