-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
자료구조 면접 질문 정리 #62
Comments
Array는 크기가 정해진 배열이고, |
Array는 정적자료구조이며, LinkedList는 동적자료구조이다. |
우선순위큐는 우선순위를 정하는 로직을 바탕으로 큐의 맨처음 front로 갈 데이터를 정하는 방식의 자료구조입니다. |
해시테이블은 key-value로 이루어진 자료구조입니다. |
해시 충돌은 다른 키를 넣었는데 같은 해시 값이 나오는 경우를 말합니다. 충돌 해결법
|
Hash Map은 key에 null 값을 허용하지만 Hash Table의 경우 null 값을 허용하지 않습니다. |
한 노드의 왼쪽 서브 트리는 해당 노드보다 작은 값, 균형 잡힌 이진 탐색 트리의 경우, 검색해야 할 노드 개수가 절반으로 줄어들어 검색에 O(logn)이 소요됩니다. |
평균적으로 O(logn)이 소요되며, 불균형 이진 탐색 트리는 최악의 경우이다. 이 경우 O(n)이 소요되므로 이진탐색 트리를 이용하는 장점이 사라진다. |
둘 다 균형 이진 탐색 트리의 일종으로 |
DFS는 깊이우선탐색으로 시작 정점에서 탐색 가능한 최대 깊이의 정점까지 탐색합니다. 최대 깊이의 정점에 도달한 후에는 방문한 정점을 역순으로 다시 재방문하면서, 또 탐색 가능한 정점이 있다면 반복해서 그 정점부터 최대 깊이의 정점까지 탐색합니다. 재귀 호출이나 스택으로 구현할 수 있습니다. |
Queue는 FIFO 방식으로 먼저 넣은 데이터가 먼저 나오는 방식입니다. 1,2,3,4를 넣은 경우 1,2,3,4 순으로 나오게 하기위해 stack 2개를 사용하려면
|
A, B큐가 있고 N개의 데이터가 있다고 가정합니다.
|
완전 이진 트리의 일종으로, 최대값 또는 최소값 및 우선순위가 높은 노드를 빠르게 찾을 수 있는 자료구조입니다. |
완전 이진 트리 : 트리의 마지막 레벨을 제외한 모든 레벨에 노드가 채워져 있으며 마지막 레벨은 왼쪽에서 오른쪽으로 노드가 채워져 있다. 포화 이진 트리 : 트리의 마지막 레벨까지 노드가 모두 채워져 있다. 포화 이진 트리는 완전 이진 트리이다. 이진 탐색 트리 : 한 노드의 왼쪽 서브트리는 해당 노드보다 작은 값, 오른쪽은 해당 노드보다 큰 값으로 구성된다. |
|
List는 순서가 보장되고 중복 요소가 들어갈 수 있는 경우 사용합니다. |
deque은 이중연결리스트 + 큐로 구현할 수 있어서 has-a 관계라고 할 수 있습니다. |
val a = ArrayList<Int>()
val b = mutableListOf<Int>() 의 차이는 무엇인가요? ArrayList는 List를 상속받는 ArrayList가 반환됩니다. |
ArrayList에 값이 꽉 차면, |
전자는 인터페이스이고, 후자는 메서드이지만, Iterator에 대한 반환타입을 찾아보면 인터페이스로도 존재한다. |
크게 차이나는 점은 노드에 있습니다. 이럼으로써 이중 링크드 리스트는 가진 노드들의 맨 마지막 부분부터 탐색이 가능하지만, 단일 링크드 리스트에 비해 공간적 효율이 떨어지는 단점을 가지고 있습니다. |
이중 링크드 리스트는 이전 노드의 값도 가지고 있기 때문에 단일 링크드 리스트보다 더 많은 메모리 공간을 필요로 합니다. |
Graph는 정점과 간선으로 구현된 자료구조이고 Tree는 그래프의 한 종류로 사이클이 없이 계층적 관계를 표현하는 자료구조 입니다. |
Java Collection Framework의 줄임말입니다.
|
List는 순서가 있고, 중복이 허용되는 데이터의 집합입니다.
Set은 순서가 없고, 중복이 불가능한 데이터의 집합입니다.
|
따라서 전자는 순서가 보장되며 후자는 보장x |
JVM의 우선순위 큐(Priority Queue)를 기준으로 설명드리겠습니다. |
Array는 정적 할당으로 선언 시 크기를 지정하거나 초기화를 해주어야합니다. 또한, 요소의 변경은 가능하지만 추가나 삭제는 불가능합니다. |
큐는 FIFO 방식(선입선출)으로 OS에서 실행을 기다리는 준비큐에 사용됩니다,
스택은 프링글스를 예시로 들어 나중에 넣은 것부터 꺼낼 수 있음을 설명합니다. |
|
List, Deque를 통해 스택을 구현할 수 있고, |
중복 요소를 저장하지 않으며 순서 또한 보장되지 않는다. |
The text was updated successfully, but these errors were encountered: