https://www.acmicpc.net/problem/2696

수열의 홀수번째 인덱스에서, 해당인덱스까지의 중앙값을 구하는 문제이다.
수를 차례대로 입력받으면서 입력받는 즉시 insort_left를 통해 배열에 넣어준다.
insort_left는 정렬을 유지하면서 배열에 넣을 수 있는 함수로, 이진탐색을 통해 x보다 크거나 같은 수의 첫 번째 위치에 삽입해 준다.
insort_left를 통해 삽입하면 배열의 정렬 상태가 유지되므로 배열의 중앙 인덱스에 있는 값이 현재까지 입력받은 수의 중앙값이 된다.
import sys
from bisect import insort_left
input = sys.stdin.readline
t = int(input())
answer = []
for _ in range(t):
m = int(input())
# 입력받은수를 오름차순으로 정렬해서 저장하는 배열
arr = []
# 중앙값을 저장하는 배열
middle = []
# 10개씩 끊어서 입력받는다.
for _ in range((m//10)+1):
for x in map(int, input().split()):
# 입력을 받을수를 배열이 오름차순 상태를 유지하면서 넣어준다.
insort_left(arr,x)
l = len(arr)
# 홀수번째 인덱스라면, 배열의 중앙값을 넣어준다.
if l%2==1:
middle.append(arr[l//2])
answer.append(middle)
for arr in answer:
l = len(arr)
print(l)
# 10개씩 끊어서 출력한다.
for i in range((l//10)+1):
print(' '.join(map(str,arr[i*10:i*10+10])))

'python' 카테고리의 다른 글
| [백준] 1707 이분 그래프, python (0) | 2025.10.19 |
|---|---|
| 파이썬 함수 결과값 자동 캐싱(cache, lru_cache), python (0) | 2025.10.15 |
| [백준] 25682 체스판 다시 칠하기 2, python (0) | 2025.10.14 |
| [백준] 13459 구슬 탈출, python (0) | 2025.10.10 |
| [백준] 1207 종이 자르기, python (0) | 2025.10.10 |