개발자 기술면접 꼬리물기 질문
  • Welcome
  • 01 Java
    • 01-01. Generic
    • Garbage Collection
    • 자료형과 객체 비교
    • 힙(Heap)과 메모리(Memory)
    • JDK 버전과 JRE
    • 스레드(Thread)
    • 예외(Throwable)
    • Call By Value와 Call By Reference
    • String, equals, StringBuffer
    • Thread와 비동기
  • 02 Spring
    • 02-01. Spring 동작 방식
    • @Autowired, @RequiredArgsConstructor
    • 인증(Authentication)과 인가(Authorization)
    • 트랜잭션(Transaction)
    • QueryDSL과 SQL Injection
    • SecurityContextHolder
    • @EqualsAndHashCode
  • 알고리즘과 자료구조
    • Set 자료구조
    • 정렬 알고리즘
    • 우선순위 큐 (Priority Queue)
    • DFS와 BFS
    • 힙(Heap) 자료구조
    • 스택(Stack)과 큐(Queue)
    • 암호화 알고리즘
    • LinkedList
    • 자료구조 - 해시 테이블(HashTable)
    • 자료구조 - ConcurrentHashMap
  • 데이터베이스
    • 기본
    • 인덱스 (Index)
    • 정규화 (Normalization)
    • 파티셔닝과 샤딩(Partitioning & Sharding)
    • 트랜잭션(Transaction)과 락(Lock)
    • 덤프(Dump)
    • Redis
    • 격리 수준(MySQL)
  • 네트워크
    • 전송 계층 (Transport Layer)
    • 네트워크 계층 (Network Layer)
    • Http와 Https
    • IP(Internet Protocol)
    • 프록시 서버
    • Http Protocol
    • 소켓(Socket)
    • 로드 밸런싱(Load Balancing)
  • 디자인 패턴
    • 전략 패턴 (Strategy Pattern)
    • 싱글톤 패턴 (Singleton Pattern)
    • 템플릿 메서드 패턴과 전략 패턴
    • 데코레이터 패턴 (Decorator pattern)
  • 웹
    • CORS 정책
    • 동시성 제어
    • N+1 문제
    • 웹 브라우저 동작원리
    • URI, URL, URN
    • 채팅 아키텍처 설계
  • 개발자
    • 개발 방법론 TDD
  • 운영체제
    • JIT & AOT 컴파일
    • 컨텍스트 스위칭(Context Switching)
    • 프로세스와 스레드
    • 싱글 스레드와 멀티 스레드
  • 코딩테스트
    • Stack / Queue (스택 / 큐)
    • Heap(우선 순위 큐)
    • DP(동적 계획법)
    • DFS(깊이 우선 탐색)
    • BFS(너비 우선 탐색)
    • Greedy(그리디 알고리즘)
    • 해시(Hash)
    • 투 포인터 알고리즘
    • Shortest path
    • 수학적 사고
Powered by GitBook
On this page
  • Q. 힙(Heap)자료구조에 대해서 설명해주세요
  • Q. 힙의 삽입 연산의 시간 복잡도가 log n 이라고 하셨는데, 어떻게 log n 이 나오는지 설명해주실 수 있나요?
  • Q. 힙의 높이가 왜 log n의 비례하죠?
  1. 알고리즘과 자료구조

힙(Heap) 자료구조

Q. 힙(Heap)자료구조에 대해서 설명해주세요

A. 힙(Heap)은 완전 이진 트리 형태를 갖춘 자료구조로, 우선순위 큐를 구현하는 데 주로 사용됩니다. 힙은 보통 두 가지 종류가 있습니다.

  • 최대 힙 (Max Heap): 부모 노드가 자식 노드보다 항상 크거나 같도록 구성된 트리입니다. 루트 노드에는 가장 큰 값이 위치합니다.

  • 최소 힙 (Min Heap): 부모 노드가 자식 노드보다 항상 작거나 같도록 구성된 트리입니다. 루트 노드에는 가장 작은 값이 위치합니다. 힙은 삽입과 삭제 연산 시 시간 복잡도가 O(lon n)으로 효율적이며, 정렬, 우선순위 큐 등의 알고리즘에서 활용됩니다. 일반적으로 배열을 사용해 구현하며, 배열의 인덱스를 통해 부모-자식 관계를 쉽게 찾을 수 있습니다.


Q. 힙의 삽입 연산의 시간 복잡도가 log n 이라고 하셨는데, 어떻게 log n 이 나오는지 설명해주실 수 있나요?

A. 삽입 과정에서 힙은 트리의 가장 마지막 자리에 새로운 노드를 넣습니다. 이런 삽입 자체는 O(1)의 시간이 걸립니다. 그후 새로 삽입된 노드가 최대 힙 또는 최소 힙을 만족하지 않으면 부모 노드와 비교해 자리를 교환하는 과정을 반복합니다. 이 과정을 상향 이동(upheap, or bubble-up) 이라고 부르며, 교환할 떄마다 한 레벨 위로 올라갑니다. 힙의 높이는 log n에 비례하므로, 상향 이동하는 최대 횟수는 트리의 높이만큼 발생할 수 있습니다. 결국 상향 이동은 트리의 높이에 따라 최대 O(log n)의 시간이 걸립니다.


Q. 힙의 높이가 왜 log n의 비례하죠?

A. 힙의 높이가 log n인 이유는 힙이 완전 이진 트리의 구조를 가지기 때문입니다. 완전 이진 트리는 트리의 각 레벨이 모두 채워져 있으며, 마지막 레벨은 왼쪽부터 차례대로 채워지는 이진 트리입니다. 이 구조는 트리의 높이가 노드 수와 특정한 관계를 가집니다. 이진 트리는 각 부모 노드가 최대 두 개의 자식을 가집니다. 즉, 루트에서부터 자식으로 내려갈수록 트리의 노드 수는 2의 제곱의 수 만큼 증가합니다. 예를 들어, 레벨 0의 1개의 노드, 레벨 1의 2개의 노드, 레벨 2의 4개의 노드, 레벨 3의 8개의 노드... 그렇다면 높이가 h인 완전 이진 트리에서 총 노드의 수 n은 등비 수열의 합이므로 2^(h+1) - 1 이 됩니다. 이때 h가 트리의 높이 이므로 h는 log n의 근사값이 됩니다.

PreviousDFS와 BFSNext스택(Stack)과 큐(Queue)

Last updated 7 months ago