자료구조
서비스나 어플리케이션에서 필요한 데이터를 메모리에 어떻게 구조적으로 잘 정리해서 담아두고 관리하고 최종적으로 가장 효율적인 방식으로 필요한 데이터를 빠르게 접근하고 필요한 수정, 삽입, 삭제할 수 있도록 도와준다.
서비스에서 클라이언트에게 데이터를 제공하거나 어플리케이션에서 사용자에게 필요한 데이터를 보여주거나 수정할 때 효율적으로 일을 처리하기 위해서는 기능에 적합한 알맞은 자료구조를 쓰는 것이 중요하다. 어떤 자료구조를 쓰느냐에 따라 사용자가 원하는 기능을 수행하는데 0.2초가 걸릴 수도 2초가 걸릴 수도 있기 때문이다.
자료 구조의 종류는 굉장히 다양하다.
•
배열
•
단일 연결리스트
•
이중 연결리스트
•
스택
•
해쉬 테이블
< 자료 구조 공부 tip > : 완전탐색 / 구현
1.
자료 구조 안에 있는 데이터들의 순서가 보장되는지
2.
중복되는 데이터가 들어갈 수 있는지
3.
검색할 때 얼마나 효율적인지
4.
원하는 기능에 따라서 수정할 때 얼마나 효율적인지
알고리즘
알고리즘은 제한된 공간과 시간 안에서 데이터를 어떻게 처리할 것인지를 정해놓은 로직이다.
즉 주어진 인풋으로 정의된 계산을 수행한 다음에 아웃풋 결괏값을 내는 것을 말한다.
•
BIG O : 동일한 알고리즘의 로직으로 인풋의 사이즈가 점점 커질수록 시간이 얼마나 더 많이 걸리느냐를 정의한 시간 복잡도
< 알고리즘 공부 TIP>
1.
input의 사이즈가 커질수록 big o 가 어떻게 변화하는지
2.
공간과 시간의 복잡도는 어떤지
3.
어떤 자료구조를 사용해서 해당 알고리즘을 쓰는 것이 좋은지
< 좋은 알고리즘이란?>
제일 좋은 알고리즘은 제공된 데이터를 정말 작은 공간과 빠른 시간 안에서 효율적으로 처리할 수 있는 것이다.