공부기록/자바스크립트 코딩테스트

[백준/Python] 1655 가운데를 말해요

_우지 2022. 7. 5. 10:13

문제링크

 

1655번: 가운데를 말해요

첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1

www.acmicpc.net

 

문제풀이

2022.07.04 - [공부기록/자바스크립트 코딩테스트] - [백준/Python] 2696번 중앙값 구하기

 

[백준/Python] 2696번 중앙값 구하기

문제링크 2696번: 중앙값 구하기 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스의 첫째 줄에는 수열의 크기 M(1 ≤ M ≤ 9999, M은 홀수)이 주어지고, 그 다음 줄부터

ehddud100677.tistory.com

어제 공부했던 중앙값 구하기를 다시 복습하고 풀었습니다.

로직은 동일합니다.

import sys
import heapq
input = sys.stdin.readline

maxh = []
minh = []

num = int(input())
first = int(input())
heapq.heappush(maxh,-1*first)
print(first)
for i in range(1,num) :
    target = int(input())
    if (i+1) % 2 == 0 :
        if -1*maxh[0] < target :
            heapq.heappush(minh,target)
        else :
            heapq.heappush(minh,-1*heapq.heappop(maxh))
            heapq.heappush(maxh,-1*target)
        # 출력
        print(-1*maxh[0])
    else :
        if minh[0] < target:
            heapq.heappush(maxh,-1*heapq.heappop(minh))
            heapq.heappush(minh,target)
        else :
            heapq.heappush(maxh,-1*target)
        # 출력
        print(-1*maxh[0])