π€λ¬Έμ ν΄κ²°
-
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
'Algorithm Problem > Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[python] SWEA - 10761. μ λ’° (0) | 2020.11.08 |
---|---|
[python] λ°±μ€ - 3190. λ± (μΌμ± SW μλ ν μ€νΈ κΈ°μΆ λ¬Έμ ) (0) | 2020.11.07 |
[python] λ°±μ€ - 1747. μμ&ν°λ¦°λ둬 (0) | 2020.11.04 |
[python] λ°±μ€ - 16916. λΆλΆ λ¬Έμμ΄ (0) | 2020.11.03 |
[python] SWEA - 10912. μΈλ‘μ΄ λ¬Έμ (0) | 2020.11.02 |