ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] λ°±μ€€ - 11286 μ ˆλŒ“κ°’ νž™
    __Python/__Algorithm 2022. 1. 7. 17:26

     

      λ¬Έμ œ

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

     

    πŸ”Ή λ¬Έμ œ

    μ ˆλŒ“κ°’ νž™μ€ λ‹€μŒκ³Ό 같은 연산을 μ§€μ›ν•˜λŠ” μžλ£Œκ΅¬μ‘°μ΄λ‹€.

    1. 배열에 μ •μˆ˜ x (x ≠ 0)λ₯Ό λ„£λŠ”λ‹€.
    2. λ°°μ—΄μ—μ„œ μ ˆλŒ“κ°’μ΄ κ°€μž₯ μž‘μ€ 값을 좜λ ₯ν•˜κ³ , κ·Έ 값을 λ°°μ—΄μ—μ„œ μ œκ±°ν•œλ‹€. μ ˆλŒ“κ°’μ΄ κ°€μž₯ μž‘μ€ 값이 μ—¬λŸ¬κ°œμΌ λ•ŒλŠ”, κ°€μž₯ μž‘μ€ 수λ₯Ό 좜λ ₯ν•˜κ³ , κ·Έ 값을 λ°°μ—΄μ—μ„œ μ œκ±°ν•œλ‹€.

    ν”„λ‘œκ·Έλž¨μ€ μ²˜μŒμ— λΉ„μ–΄μžˆλŠ” λ°°μ—΄μ—μ„œ μ‹œμž‘ν•˜κ²Œ λœλ‹€.

     

    πŸ”Ή μž…λ ₯

    첫째 쀄에 μ—°μ‚°μ˜ 개수 N(1≤N≤100,000)이 주어진닀. λ‹€μŒ N개의 μ€„μ—λŠ” 연산에 λŒ€ν•œ 정보λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ xκ°€ 주어진닀. λ§Œμ•½ xκ°€ 0이 μ•„λ‹ˆλΌλ©΄ λ°°μ—΄μ— xλΌλŠ” 값을 λ„£λŠ”(μΆ”κ°€ν•˜λŠ”) 연산이고, xκ°€ 0이라면 λ°°μ—΄μ—μ„œ μ ˆλŒ“κ°’μ΄ κ°€μž₯ μž‘μ€ 값을 좜λ ₯ν•˜κ³  κ·Έ 값을 λ°°μ—΄μ—μ„œ μ œκ±°ν•˜λŠ” κ²½μš°μ΄λ‹€. μž…λ ₯λ˜λŠ” μ •μˆ˜λŠ” -231보닀 크고, 231보닀 μž‘λ‹€.

     

    πŸ”Ή μΆœλ ₯

    μž…λ ₯μ—μ„œ 0이 주어진 회수만큼 닡을 좜λ ₯ν•œλ‹€. λ§Œμ•½ 배열이 λΉ„μ–΄ μžˆλŠ” 경우인데 μ ˆλŒ“κ°’μ΄ κ°€μž₯ μž‘μ€ 값을 좜λ ₯ν•˜λΌκ³  ν•œ κ²½μš°μ—λŠ” 0을 좜λ ₯ν•˜λ©΄ λœλ‹€.

     

      ν’€μ΄ 방법

     

    πŸ”Ή μš°μ„ μˆœμœ„ 큐

    πŸ”Ή νž™(heap) - heapq

    πŸ”Ή μ΅œμ†Œνž™

    πŸ”Ή μ ˆλŒ“κ°’ κΈ°μ€€ μ •λ ¬, κ·Έ μ™Έ μ΅œμ†Œνž™κ³Ό 동일

     

      κ΅¬ν˜„ μ½”λ“œ

    import sys
    import heapq
    
    N = int(sys.stdin.readline())
    inputs = [int(sys.stdin.readline()) for _ in range(N)]
    heap = []
    for x in inputs:
        if x == 0:
            if heap:
                print(heapq.heappop(heap)[1])
            else:
                print(0)
        else:
            heapq.heappush(heap,(abs(x),x))

     

      μ‹€ν–‰ κ²°κ³Ό

     

      πŸ’‘

     

     

     

     

     

     

     

    728x90

    λŒ“κΈ€

Designed by Tistory.