자료(※)를 효율적으로 관리하는 방법, 방법론.
※ 자료란 즉 데이터를 말함. 컴퓨터로 다룰 수 있는 모든 것들. 변수, 상수, 파일 etc
꼬리 물기, stack, 트리 구조...etc
효율적으로 연산하는 방법. 생각의 순서
자료구조와 알고리즘을 고려한 코드란
성능(속도), 용량, 비용을 고려한 코드!!
수행 시간에 대한 척도
" 100개의 통조림에 맛있는 통조림 하나가 섞여있다. 맛있는 통조림을 찾아라! "
라는 질문에 대해
최선의 경우 : 1번만에 찾았어요!
-> 빅 오메가 표기법 (Big-Ω)
보통의 경우 : 50번만에 찾았어요
-> 빅 세타 표기법 (Big-θ)
최악의 경우 : 100번만에 찾았어요...
-> 빅 오 표기법 (Big-O)
알고리즘의 성능은 시간 복잡도로 설명하는데,
이를 표기하는 방법으로 빅 오 표기법 (Big-O) 이 많이 사용된다!
for문의 중첩을 고려할 것!
for문이 1개일 경우 O(n) 만큼의 시간 복잡도가 발생한다. 2개일 경우 O(n^2) 3개일 경우 O(n^3)...
for문을 최소한으로 굴려서 시간 복잡도를 줄일 수 있도록 하자!
메모리 사용량의 척도
시간 복잡도와 같이 빅 오 표기법 (Big-O) 을 많이 사용한다.
요즘은 메모리 기술의 발달로 시간 복잡도의 중요성이 증대했다고 하니, 시간 복잡도를 중점적으로 고려하며 공간 복잡도도 확인하기!
데이터가 꼬리에 꼬리를 무는 느낌. 화물 열차를 생각하자!
데이터가 저장되는 칸을 일컫는다.
맨 앞의 칸은 HEAD, 마지막 칸은 TAIL.
현재 노드가 가리키는 다음 칸을 말한다.