본문 바로가기

TIL

TIL 23.08.02 Mockterview (1)~(3)

1. 시간복잡도와 공간복잡도는 무엇인가 ?

 

둘 다 알고리즘 성능 평가시 사용되는 개념이다.

시간복잡도 : 시간 복잡도란 알고리즘의 절대적인 실행시간이 아닌, 알고리즘을 실행하는데 연산들이 몇 번 이루어지는지 숫자로 표기한 것이다. 
공간복잡도 : 프로그램을 실행시킨 후 완료하는 데 필요로 하는 자원 공간의 양을 뜻한다. 그러나 예전에 비해 컴퓨터 성능이 발달하여 메모리 공간에 여유가 생겨 중요도는 떨어졌다. 시간 복잡도와 공간 복잡도는 반비례적인 성향이 있다. 

 


2. 스택과 큐는 무엇인가?

 

스택, 큐

 

스택 : 웹 브라우저의 뒤로가기 처럼 가장 늦게 쌓인 데이터가 가장 빨리 나가는 후입선출의 자료구조이다. 
큐 : 입력된 데이터가 시간 순서대로 처리해야 할 필요가 있는 상황에 사용되며, 가장 먼저 들어간 데이터가 제일 처음 나가는 선입선출의 자료구조이다. 


3. 배열과 링크드리스트는 무엇인가 ?

 

배열 : 배열은 데이터를 일렬로 나열한 구조로, 각 데이터는 인덱스로 접근할 수 있다. 배열은 데이터를 연속된 메모리 공간에 저장하며 인덱스를 사용해 해당 데이터에 접근할 수 있다.

[10, 24, 7, 15, 32]

 

 

링크드리스트 : 링크드리스트는 노드라 불리는 작은 단위로 관리한다. 각 노드는 데이터와 다음 노드를 가리키는 포인터로 구성되어 있다. 링크드 리스트는 노드들이 메모리 공간에 흩어져 저장될 수 있고, 추가 및 삭제가 상대적으로 용이하다.

[Data: 10] -> [Data: 24] -> [Data: 7] -> [Data: 15] -> [Data: 32] -> null

 

정리하면, 

배열은 데이터를 인덱스로 접근하며 연속된 메모리 공간에 저장되고 크기가 변경되기 어렵지만 빠른 접근이 가능한 자료 구조.

링크드 리스트는 노드로 이루어져 있고 각 노드는 데이터와 다음 노드를 가리키는 포인터를 가지며, 데이터의 추가와 삭제가 용이한 유연한 자료 구조