자료구조&알고리즘

자료구조 & 알고리즘을 왜 공부해야 할까?

with_AI 2022. 4. 7. 00:58

 

자료구조와 알고리즘을 해야하는 이유

 

- 취업

- 코딩테스트

- 면접

--arraylist와 linkedlist의 차이를 내부 구현관점에서 설명하시오

--merge sort의 시간복잡도를 증명하시오 (O(nlogn))

- 컴퓨팅적 사고 능력

 

현업에서

- 알고리즘과 자료구조르르 모르면 해결할 수 없는 문제들이 존재

- 자료구조의 내부 구현을 모르면 잘못 사용하기 쉽다.

 

- 수억개의 데이터 중 내가 원하는 결과를 빠르게 찾으려면?

- 한정된 자원(시간, 공간)으로 최적의 결과를 내려면?

 


자료와 자료 구조

- 자료를 어디에 어떻게 관리할까

--검색, 순회, 저장, 삭제, 변경, 스왑

- 자료를 담는 추상적인 틀

 

Data Data Structre

- 컴퓨터의 자원은 한정적

- 제한된 제약조건 내에 정확한 결과를 도출해야 함

- 데이터의 형태와 쓰임에 가장 적합한 자료구조를 쓰는 것은 매우 중요하다.

 

모든 병목의 시작점

- 잘못 쓴 자료구조 하나로 진짜 느린 시스템...

- 트래픽이 몰려서 서버가 터진다면?..

- 너무나 큰 Big O?

- 최악의 상황?

 

자료구조의 특징

- 자료구조의 장점

- 자료구조의 한계

 

알고리즘

- 어떤 문제가 주어질때 문제를 풀기 위한 동작의 절차

- 입력을 통해 결과를 내는 과정 , 절차

 


빅오 Big O

 

점근 표기법

- 빅오 표기법

- 세타 표기법

- 오메가 표기법

 

상한과 하한

상한 : 최상의 상태

하한 : 최악의 상태

 

점근 표기법 특징

- 가장 큰 영향력이 있는 항만 표시한다. 

- 상수항은 무시한다.

- O(N^3+N^2+N) -> O(N^3)

 

공간복잡도

- 데이터 관리에 필요한 공간

- 데이터 양의 변화에 따른 공간의 변화

- 예상 소요 공간 측정

 

시간 복잡도

- 데이터 처리에 소요되는 시간

- 데이터 양의 변화에 따른 소요 시간의 변화

- 예상 처리 시간을 측정

- 지연 장애가 발생했을 때 왜 발생했는지를 찾을 수 있는 근거가 된다.

 

 


이진탐색

 

- 숫자를 절반씩 잘라나가면서 그 범위를 좁혀나가는것 

- k는 시행횟수

- logn의 시간 복잡도

 

 

merge sort

 

- 데이터를 절반씩 나눠서 정렬

- n번만큼 데이터를 비교해서 정렬

- 따라서 n * log n