개발자 기술면접 꼬리물기 질문
  • 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. 우선순위 큐(Priority Queue)란 무엇이며, 일반적인 큐와 어떤 차이점이 있나요?
  • Q. 우선순위 큐를 구현하는 방법에는 어떤 것들이 있으며, 각각의 시간 복잡도는 어떻게 되나요?
  • Q. 우선순위 큐에서 힙을 사용할 때, 최소 힙(Min-Heap)과 최대 힙(Max-Heap)의 차이점은 무엇인가요?
  • Q. 우선순위 큐는 다익스트라 알고리즘 같은 그래프 알고리즘에서 어떻게 활용되나요?
  1. 알고리즘과 자료구조

우선순위 큐 (Priority Queue)

Q. 우선순위 큐(Priority Queue)란 무엇이며, 일반적인 큐와 어떤 차이점이 있나요?

우선순위 큐는 각 요소가 우선순위를 가지고 있으며, 큐에서 가장 높은 우선순위를 가진 요소가 먼저 제거되는 자료구조입니다. 일반적인 큐에서는 FIFO(First In, First Out) 원칙에 따라 요소가 처리 되지만, 우선순위 큐에서는 우선순위가 높은 요소가 먼저 처리됩니다.


Q. 우선순위 큐를 구현하는 방법에는 어떤 것들이 있으며, 각각의 시간 복잡도는 어떻게 되나요?

우선순위 큐는 배열, 연결 리스트, 힙(Heap) 등을 사용해 구현할 수 있습니다. 배열을 사용하면 삽입은 O(1) 이지만, 삭제는 O(n)입니다. 정렬된 연결 리스트를 사용하면 삽입과 삭제가 모두 O(n)입니다. 가장 효율적인 방법은 힙을 사용하는 것이며, 이 경우 삽입과 삭제가 모두 O(log n)의 시간 복잡도를 가집니다.


Q. 우선순위 큐에서 힙을 사용할 때, 최소 힙(Min-Heap)과 최대 힙(Max-Heap)의 차이점은 무엇인가요?

최소 힙에서는 부모 노드가 항상 자식 노드보다 작은 값을 가지며, 루트 노드가 가장 작은 값을 가집니다. 반대로 최대 힙에서는 부모 노드가 자식 노드보다 큰 값을 가지며, 루트 노드가 가장 큰 값을 가집니다. 우선순위 큐에서 최소 힙은 최소 값을 빠르게 추출할 때, 최대 힙은 최대 값을 빠르게 추출할 때 사용됩니다.


Q. 우선순위 큐는 다익스트라 알고리즘 같은 그래프 알고리즘에서 어떻게 활용되나요?

다익스트라 알고리즘에서는 최단 경로를 찾기 위해 우선순위 큐를 사용합니다. 시작점에서 다른 모든 정점까지의 거리를 게산할 때, 우선순위 큐를 통해 현재까지 발견된 가장 짧은 경로를 가진 정점을 먼저 처리할 수 있습니다. 이를 통해 효율적으로 최단 경로를 계산할 수 있으며, 우선순위 큐의 힙을 사용하면 시간 복잡도를 O (n log n)으로 줄일 수 있습니다.

Previous정렬 알고리즘NextDFS와 BFS

Last updated 8 months ago