로컬에서는 잘 되는데 ☘️

자료구조란?

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/[패스트캠퍼스]

https://coding-factory.tistory.com/227[코딩팩토리]

블로그의 정보

개발하는만두

youngjun._.

활동하기