[python] λ°±μ€ - 1655. κ°μ΄λ°λ₯Ό λ§ν΄μ
π€λ¬Έμ ν΄κ²°
-
G2 | μ°μ μμ ν
μ²μμλ κ°λ³κ² μ λ ¬λ‘ νμμ§λ§, μκ°μ΄κ³Όκ° λ°μνλ€. ( λ°μ΄λ리μμΉλ ν΅κ³Ό λλ€κ³ ν¨ )
κ°μ΄λ° κ° κ΅¬νκΈ°λ₯Ό μ΄μ¬ν μ°Ύμλ΄€μ§λ§ μμλ€. μ΄μ© μ μλ€.
μ΄ λ¬Έμ μ μλλ μ°μ μμ νλ₯Ό νμ©νλ κ²μ΄λ€.
νμ΄μ¬μ νν λͺ¨λμ μ¬μ©νλ©΄ λλλ°, μ΅μν κΈ°μ€μΌλ‘ λμ΄μλ€.
μ΅μνμ κ°μ₯ μμ μμκ° λ£¨νΈμ μμΉνλ κ²μ΄λ€.
μ°λ¦¬λ κ°μ΄λ° κ°μ μ°ΎμμΌ νκΈ° λλ¬Έμ νμ λκ° λ§λ€μ΄μ
μΌμͺ½μ κ°μ₯ ν° μμ μ€λ₯Έμͺ½μ κ°μ₯ μμ μλ₯Ό λΉκ΅νμ¬ κ°μ΄λ° κ°μ ꡬν κ²μ΄λ€.
μ΄λ κ² λ λΆλΆμΌλ‘ λλλ©΄ κ°μ΄λ° κ°μ ꡬ ν μ μλ€.
νμ§λ§!!!!!!!!!!! μ΅μνμΌλ‘ νν λͺ¨λμ΄ κ΅¬μ±λμ΄ μμΌλ―λ‘, μΌμͺ½μ ꡬμ±μ μμλ₯Ό λΆμ¬μ κ±°κΎΈλ‘ λ§λ€μ΄μΌνλ€.
μ΄λ κ² νλ©΄ μΌμͺ½μ 0λ²κ³Ό μ€λ₯Έμͺ½μ 0λ²μ λΉκ΅ν μ μλ€. (λΉμ°ν κΊΌλΌ λλ -λ₯Ό λ€μ λΆμ¬μ€λ€.)
π»μμ€ μ½λ
import sys
import heapq
input = sys.stdin.readline
def push_heap(left_heap: list, right_heap: list, num: int, n: int):
# μ«μμ κ°μκ° νμμ΄λ©΄ μ€λ₯Έμͺ½μ λ£κ³ , μ§μλ©΄ μΌμͺ½μ λ£κΈ°
if n % 2 == 1:
heapq.heappush(right_heap, num)
else:
heapq.heappush(left_heap, -num)
def make_mid_heap(left_heap: list, right_heap: list):
# λ ννΈμ μ΅λκ°μ΄ λΌμ΄νΈμ μ΅μκ°λ³΄λ€ ν¬λ©΄ μμΉ κ΅ν
if left_heap: # λΌμ΄νΈλ§ μμ μ μκΈ° λλ¬Έμ ifλ¬Έ μ²λ¦¬
left_max = -left_heap[0]
right_min = right_heap[0]
if left_max > right_min:
heapq.heappush(left_heap, -heapq.heappop(right_heap))
heapq.heappush(right_heap, -heapq.heappop(left_heap))
def get_mid_number(left_heap: list, right_heap: list, n: int) -> int:
# μ«μμ κ°μκ° νμμ΄λ©΄, λΌμ΄νΈμμ μ΅μκ°μ λ°ν
# μ«μμ κ°μκ° μ§μμ΄λ©΄, λ ννΈ μ΅λμ λΌμ΄νΈ μ΅μλ₯Ό λΉκ΅νμ¬ μ΅μκ° λ°ν
if n % 2 == 1:
return right_heap[0]
else:
return min(-left_heap[0], right_heap[0])
if __name__ == '__main__':
N = int(input()) # μ«μμ κ°μ
left_numbers = [] # μ΅λ ν(μ΅λκ°μ μμλ‘ λ£μ΄ μ΅λκ°μ΄ 0λ²μ μ€κ² νλ€)
right_numbers = [] # μ΅μ ν
for i in range(1, N + 1):
number = int(input())
push_heap(left_numbers, right_numbers, number, i)
make_mid_heap(left_numbers, right_numbers)
answer = get_mid_number(left_numbers, right_numbers, i)
print(answer)
πλ¬Έμ νμΈ
μΆμ²: BACKJOON ONLINE JUDGE
λ§ν¬: https://www.acmicpc.net/problem/1655
1655λ²: κ°μ΄λ°λ₯Ό λ§ν΄μ
첫째 μ€μλ μλΉμ΄κ° μΈμΉλ μ μμ κ°μ Nμ΄ μ£Όμ΄μ§λ€. Nμ 1λ³΄λ€ ν¬κ±°λ κ°κ³ , 100,000λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€. κ·Έ λ€μ Nμ€μ κ±Έμ³μ μλΉμ΄κ° μΈμΉλ μ μκ° μ°¨λ‘λλ‘ μ£Όμ΄μ§λ€. μ μλ -1
www.acmicpc.net