DevSSOM

자료구조 - 자료구조와 알고리즘 개념 본문

자료구조

자료구조 - 자료구조와 알고리즘 개념

데브쏨 2021. 6. 13. 18:45
반응형

프로그램은 입력(input), 실행(process), 저장(strore), 출력(output)으로 구성됨. 그림의 화살표는 데이터의 흐름과 저장, 즉 어떤 자료구조의 데이터를 어떻게 저장해서 보낼 것인지를 보여줌. 실행(process)에 해당하는 사각형에서 거의 모든 프로그램의 실행 방식이 결정되기 때문에, 이 단계가 가장 알고리즘과 연관이 있어. 알고리즘은 효율적인 프로그래밍을 위해서 시간과 공간의 복잡성을 고려해서 짜여져야 되기 때문에, 시간과 공간의 효율성이 알고리즘과 연관돼.

 

 

자료구조(Data Structure)

프로그램이 돌아가기 위해서는 많은 값들을 저장하고, 기억해야 됨. 이때 이 값들을 어떻게, 그리고 어디에 저장하면 좋을까?에 자료구조가 활용됨.

 

자료구조에는 여러 종류가 있음. 

가장 간단한 타입으로는 정수, 실수, 문자 등이 있고, 이어서 배열, 해쉬, 링크드리스트, 스택, 큐, 트리, 더 나아가서 그래프까지. 이 자료구조의 종류를 무조건 많이 안다고해서 결코 좋은 것만은 아님. 주어진 상황에서 가장 효율적인 때와 장소에 맞는 자료구조, 즉 옵티마이즈(최적화)된 자료구조를 사용해야 함. 이솝우화의 여우와 두루미에게 어떤 접시가 가장 알맞는지를 찾아내는게 우리가 해야하는 일.

 

 

알고리즘(Algorithm)

자료구조를 바탕으로 데이터를 저장했다고 쳐. 그리고 나서 저장한 데이터를 어떻게 활용해서 프로그램을 짜면 좋을까? 알고리즘이란 바로 이때 하는 고민. 주어진 문제를 어떻게 시간과 공간의 효율성을 고려해서 해결하면 좋을까에 대한 고민이야.

 

좋은 알고리즘의 조건

  • 적절한 입력 
  • 적절한 출력
  • 명확성 : 알고리즘의 각 단계 또는 코드가 어떤 수행을 위해 존재하는지 그 목적이 명확해야 함.
  • 유한성 : 코드가 무한루프에 빠지면 안된다는 뜻.
  • 효율성 : 효율성이 높을수록 좋은 알고리즘이라는 의미.

자료구조와 알고리즘의 관계

  • 자료구조 -> 알고리즘 : 자료구조가 알고리즘에 쓰인다. 자료구조를 활용해서 어떤 문제를 해결하는 것이 자료구조가 알고리즘에 쓰인다고 할 수 있는 것. 
  • 자료구조 <- 알고리즘 : 자료구조를 구현하는 데에도 알고리즘이 쓰여짐. 주어진 상황에 가장 잘 맞는 최적화된 자료구조를 구현하기 위해서는 알고리즘이 필요한 것.

    >> 이렇게 자료구조와 알고리즘은 서로 뗄레야 뗄 수 없는 관계.
728x90
반응형
댓글