제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁

면접 리스트

해시는 무엇인가요?

더보기

해시특정 값을 해시 함수를 통해 매핑하는 테이블을 의미합니다. 내부적으로 배열을 사용하기에 빠른 탐색 속도를 가집니다. 가능성은 낮지만 해시 함수에 동일한 값이 반환될 시에는 충돌이 일어나는데 이를 해결할 다른 방법이 필요합니다.

그래프는 무엇인가요?

더보기

그래프노드와 간선으로 이루어진 데이터의 집합을 의미합니다. 그래프에는 양방향 그래프나 단방향 그래프가 있으며 인접행렬이나 인접 리스트를 이용하여 그래프를 표현할 수 있습니다. 

트리에 대해서 설명해주세요.

더보기

트리는 그래프의 일종으로 계층적 관계를 표현하는 자료구조입니다. 그래프와 마찬가지로 노드와 간선으로 이루어져 있으며 이진트리, 이진탐색 트리, 선형 트리등 트리의 구조에 따라 많은 트리가 존재합니다.

트리가 그래프와 다른점은 사이클이 존재하지 않는 것입니다.

힙에 대해서 설명해주세요

더보기

최대 힙을 기준으로 설명드리겠습니다. 

트리 중에서 가장 값이 큰 노드를 루트노드로 가지고 있는 트리를 의미합니다. 따라서 루트 노드를 계속해서 탐색하다보면 내림차순 정렬된 결과 값을 얻을 수 있습니다. 이때 데이터를 삭제할 때에는 heapify를 거치게 되며 데이터를 삽입할 때에도 마찬가지로 heapify 과정을 거치게 됩니다.

따라서 최대값을 가지는 연산에는 O(1)의 값을, 삭제 및 삽입에는 O(logN)의 시간복잡도를 가집니다.

'기술면접 > 자료구조' 카테고리의 다른 글

[기술면접] 자료구조 2  (0) 2024.12.03
[기술면접] 자료구조 1  (0) 2024.12.03
제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁

면접 리스트

배열과 리스트는 어떻게 다른가요?

더보기

배열같은 타입의 데이터를 모은 집합으로 메모리 공간에서 연속적인 공간을 할당받습니다. 런타임에 배열의 크기가 결정되며 랜덤접근을 통해 데이터를 접근하는데에 O(1)의 시간복잡도를 가져 접근이 많은 프로그램에 유용한 자료구조 입니다.

 

리스트같은 타입의 데이터를 모은 집합으로 배열과 동일하나 메모리 공간에서 연속적인 공간을 할당받지 않습니다. 리스트는 크기가 동적으로 할당할 수 있으며 순차적인 접근을 하기에 삽입, 삭제에는 O(1)의 시간복잡도를 가지지만 탐색에는 O(N)의 시간복잡도를 가집니다.

스택과 큐에 대해서 설명해주세요?

더보기

스택은 선형 자료 구조의 일종으로 나중에 들어간 원소가 먼저 나오는 LIFO 구조인 자료구조입니다. 재귀함수의 콜스택이나 방문 기록 등에 사용되고 있습니다.

는 선형 자료구조의 일종으로 먼저 들어간 원소가 먼저 나오는 FIFO 구조의 자료구조입니다. CPU 작업을 기다리는 프로세스나 캐시 등에 사용되고 있습니다.

 

'기술면접 > 자료구조' 카테고리의 다른 글

[기술면접] 자료구조 3  (1) 2024.12.03
[기술면접] 자료구조 1  (0) 2024.12.03
제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
접은 글을 통해 먼저 답변을 해보시고 제가 정리한 답을 확인해보시기 바라겠습니다!!

면접을 위한 CS 전공지식 노트(주홍철 저)을 통해 정리한 포스팅입니다.

면접 리스트

해시 테이블을 설명하세요

더보기

해시 테이블은 무한에 가까운 데이터들을 유한한 갯수의 해시 값으로 매핑한 테이블입니다.

이를 통해 작은 크기의 캐시 메모리로도 프로세스를 관리하도록 할 수 있습니다.

그래프와 트리의 차이점을 설명하세요

더보기

그래프정점과 간선으로 이루어진 자료구조를 말하며 트리는 그래프 중 하나로 그래프의 특징처럼 정점과 간선으로 이루어져있고 트리 구조로 배열된 일종의 계층적 데이터의 집합입니다. 트리는 그래프와 달리 사이클이 존재하지 않습니다.

이진 탐색 트리에는 어떤 문제점이 있으며 이를 해결하기 위한 트리를 설명하세요

더보기

이진 탐색 트리선형적으로 구성될 때 시간 복잡도가 O(N)으로 커지는 문제점이 있습니다. 선형적으로 구성되지 않고 균형 잡힌 트리로 구성하기 위해 나온 트리로 AVL트리레드 블랙 트리가 있습니다.

AVL트리스스로 균형을 잡는 이진 탐색 트리입니다. 두 자식 서브 트리의 높이는 항상 최대 1만큼 차이가 나는 특징이 있습니다. 탐색 삽입 삭제 모두 시간 복잡도가 O(logN)이며 삽입 삭제할 때마다 균형을 맞추기 위해 회전을 진행합니다.

레드 블랙 트리균형을 유지하기 위해 노드에 색상(빨강 또는 검정)을 부여하고 몇 가지 규칙을 따릅니다. 레드 블랙 트리는 AVL 트리보다 느슨한 균형을 유지하기 때문에 삽입과 삭제 시 회전 연산이 더 적게 발생합니다. 이로 인해 삽입과 삭제의 성능은 더 나은 경우가 많습니다. 레드 블랙 트리는 AVL 트리와 마찬가지로 탐색, 삽입, 삭제의 시간 복잡도는 O(log N)으로 보장되지만, AVL 트리만큼 탐색 속도가 빠르진 않을 수 있습니다.

정리

더보기

복잡도


시간복잡도

빅오 표기법

  • 시간 복잡도: 입력 크기에 대해 어떠한 알고리즘이 실행되는데 걸리는 시간.
  • 반복 횟수를 중점으로 체크하며 빅오 표기법으로 표현
  • 10N^2 + 100N이면 O(N^2)으로 표현

공간복잡도

  • 공간복잡도: 프로그램을 실행시켰을 때 필요로 하는 자원 공간의 양.
  • 정적 변수 + 동적 변수
  • 예: int[] a = new int[1000]은 1000 * 4byte

자료구조에서의 시간 복잡도

평균

자료구조 접근 탐색 삽입 삭제
배열 O(1) O(N) O(N) O(N)
스택 O(N) O(N) O(1) O(1)
O(N) O(N) O(1) O(1)
이중 연결 리스트 O(N) O(N) O(1) O(1)
해시 테이블 O(1) O(1) O(1) O(1)
이진 탐색 트리 O(logN) O(logN) O(logN) O(logN)
AVL 트리 O(logN) O(logN) O(logN) O(logN)
레드 블랙 트리 O(logN) O(logN) O(logN) O(logN)

worst

자료구조 접근 탐색 삽입 삭제
배열 O(1) O(N) O(N) O(N)
스택 O(N) O(N) O(1) O(1)
O(N) O(N) O(1) O(1)
이중 연결 리스트 O(N) O(N) O(1) O(1)
해시 테이블 O(N) O(N) O(N) O(N)
이진 탐색 트리 O(N) O(N) O(N) O(N)
AVL 트리 O(logN) O(logN) O(logN) O(logN)
레드 블랙 트리 O(logN) O(logN) O(logN) O(logN)

선형 자료구조


연결 리스트

  • 데이터를 감싼 노드를 포인터로 연결해서 공간적인 효율성을 극대화시킨 자료구조
  • 삽입 삭제 O(1) 탐색 O(N)
  • prev 포인터와 next 포인터, 데이터를 담는 용량
  • 싱글 연결 리스트
    • next 포인터만 가짐
  • 이중 연결 리스트
    • next, prev 포인터를 가짐
  • 원형 리스트
    • 이중 연결 리스트와 같지만 마지막 노드의 next가 head를 가르킴.

배열

  • 같은 타입의 변수들로 이루어져있고, 크기가 정해져있으며 인접한 메모리 위치에 데이터를 모아놓은 집합.
  • 중복 허용, 순서가 있음.
  • 접근: O(1) 랜덤 접근 가능, 삽입, 삭제: O(N)
  • 데이터 추가 + 삭제가 많을 때에는 연결리스트, 접근을 많이할 때에는 배열로.

랜덤 접근과 순차적 접근

  • 랜덤 접근(직접 접근): 동일한 시간에 배열과 같은 순차적인 데이터가 있을 때 임의의 인덱스에 해당하는 데이터에 접근할 수 있는 기능.
  • 데이터를 순서대로 접근하는 순차적 접근과는 정반대
  • 배열 ⇒ 랜덤접근, 연결리스트 ⇒ 순차적 접근

벡터

  • 동적으로 요소를 할당할 수 있는 동적 배열.
  • 컴파일 시점에 갯수를 모른다면 백터를 사용
  • 중복을 허용하고 랜덤접근이 가능.
  • 탐색 O(1) 삭제, 삽입 O(N)

스택

  • 가장 마지막에 들어간 데이터가 가장 첫번째로 나오는 LIFO(Last In First Out)
  • 재귀 함수(콜스택), 알고리즘, 방문기록에 사용
  • 삽입 삭제 O(1) 탐색 O(N)

  • 먼저 집어넣은 데이터가 먼저 나오는 성질(FIFO, First In First Out), 스택과 반대
  • 삽입, 삭제 O(1) 탐색 O(N)
  • CPU 작업을 기다리는 프로세스, 스레드 행렬, 네트워크 접속을 기다리는 행렬, 너비우선탐색, 캐시에 사용

비선형 자료 구조


그래프

  • 정점과 간선으로 이루어진 자료구조

정점과 간선

  • 어떠한 곳: 정점
  • 무언가: 간선
  • 단방향 간선과 양방향 간선이 있음
  • 정점으로 나가는 간선은 outdegree, 들어오는 간선은 indegree
  • 정점과 간선으로 이루어진 집합을 그래프

가중치

  • 간선과 정점 사이에 드는 비용.

트리

  • 그래프의 특징처럼 정점과 간선으로 이루어져있고 사이클이 없는 구조

특징

  • 루트 노드, 내부 노드, 리프 노드가 존재
  • 루트 노드
    • 가장 위에 있는 노드.
  • 내부 노드
    • 루트 노드와 리프 노드 사이에 있는 노드
  • 리프 노드
    • 자식 노드가 없는 노드. 마지막 노드.

이진트리

  • 자식 노드 수가 두개 이하인 트리
  • full binary tree
    • 자식 노드가 0또는 두개인 이진 트리
  • 완전 이진 트리
    • 왼쪽에서부터 채워져있는 이진 트리
    • 마지막 레벨을 제외하고는 다 채워져있으며 마지막 레벨의 경우 왼쪽부터
  • 변질 이진 트리
    • 자식 노드가 하나밖에 없는 이진 트리
  • 포화 이진 트리
    • 모든 노드가 꽉 차 있는 이진 트리
  • 균형 이진 트리
    • 왼쪽과 오른쪽 노드의 높이 차이가 1이하인 이진 트리를 의미
    • map이나 set으로 구성
  • 이진탐색트리
    • 왼쪽 트리에는 노드 값보다 작은 노드들만 오른쪽 트리에는 노드 값보다 큰 노드들만.
    • 탐색에는 평균 O(logN) 최악은 O(N)
  • AVL 트리
    • 최악의 선형 트리가 되는 것을 방지하고 스스로 균형을 잡는 이진 탐색 트리.
    • 두 자식 서브 트리의 높이가 항상 최대 1만큼 차이나는 특징
    • 탐색 삽입 삭제 O(logN)
    • 회전을 함
  • 레드 블랙 트리
    • 균형 이진 트리
    • 탐색 삽입 삭제 O(logN)
    • 모든 리프 노드와 루트노드는 블랙이며 어떤 노드가 레드면 그 노드의 자식은 블랙이다.

  • 완전 이진 트리 기반의 자료구조.
  • 최대 힙: 루트의 키가 키 중에 가장 큰 값.
  • 최소 힙: 루트의 키가 키 중에 가장 작은 값.
  • 삽입
    • 힙의 성질을 통해 리프 노드에 삽입
    • 그 이후에 heapify
  • 삭제
    • 루트 노드 삭제
    • 리프 노드와 교체
    • heapify

우선순위 큐

  • 우선순위 대기열이라고도 하며 우선순위가 높은 요소나 우선순위가 낮은 요소보다 먼저 제공되는 자료구조
  • 힙을 기반으로.

  • 특정 순서에 따라 키와 매핑된 값의 조합으로 형성된 자료구조
  • 레드블랙 트리 자료구조를 기반으로 형성
  • 정렬을 보장하지 않을때 해시테이블로

  • 특정 순서에 따라 고유한 요소를 저장하는 컨테이너
  • unique한 값만을 저장.

해시 테이블

  • 무한에 가까운 데이터를 유한한 개수의 해시 값으로 매핑한 테이블
  • 삽입 삭제 탐색시 평균적으로 O(1)

 

 

참조

더보기
  • 면접을 위한 CS 전공지식 노트(주홍철 저) -길벗

'기술면접 > 자료구조' 카테고리의 다른 글

[기술면접] 자료구조 3  (1) 2024.12.03
[기술면접] 자료구조 2  (0) 2024.12.03

+ Recent posts