힙 두개 사용해서 실시간 중간값 구하기
1655번 가운데를 말해요
- 개인 공부 목적으로 작성한 포스팅입니다.
- 아래 출처를 참고하여 작성하였습니다. :)
문제: 가운데를 말해요
- 값이 들어올 때마다 중간값을 실시간으로 계산해줘야하는 문제입니다.
최대힙
과최소힙
을 사용하여 더 빠르게 중간값을 구할 수 있습니다.
규칙
아래 세 개의 규칙을 유지하며 데이터를 넣으면 최대 힙의 top 값이 중간값
이 됩니다.
최대 힙의 크기
가 최소힙의 크기보다1 크거나 같도록 유지
하며 값을 넣습니다.- 두 힙의 크기가 같다면
최대힙부터
값을 넣습니다.
- 두 힙의 크기가 같다면
- 최소 힙에 있는 값은 모두, 최대 힙에 있는 값보다 큽니다.
- 값을 넣은 후에
최소 힙 top 값이 최대 힙 top 값보다 작다면
서로 값을 교환해줍니다.