https://www.acmicpc.net/problem/1572
세그먼트 트리 문제다.
풀이
[1321] 군인 문제와 [2243] 사탕상자 문제와 마찬가지로 최근 K개의 숫자 중 (K+1)/2 번째 숫자에 접근하면 된다. 0부터 65536의 숫자가 몇 개가 담겨있는지를 표현하는 구간 합 세그먼트트리를 생성. 이후 N개의 입력을 받으면서 세그먼트트리에 갱신해 준 뒤, 원소가 K개 이상일 때부터 (K+1)/2 번째로 작은 숫자를 계산하면 정답을 구할 수 있다.
여기서 중요한 점은 최근 K개까지가 범위이므로 중앙값을 반환할 때마다 (수열의 크기 - K) 번째 숫자를 세그먼트트리에서 하나씩 제거해주어야 한다.
정답 코드
'Problem Solving > BOJ' 카테고리의 다른 글
[1849] 순열 (0) | 2023.03.05 |
---|---|
[1517] 버블 소트 (0) | 2023.03.02 |
[1321] 군인 (0) | 2023.02.28 |
[2243] 사탕상자 (0) | 2023.02.28 |
[3745] 오름세 (0) | 2023.02.26 |