โ๋ฌธ์
https://www.acmicpc.net/problem/1655
๋ฉ๋ชจ๋ฆฌ: 39016 KB, ์๊ฐ: 228 ms
์๋ฃ ๊ตฌ์กฐ, ์ฐ์ ์์ ํ
๋ฐฑ์ค์ด๋ ๋์์๊ฒ "๊ฐ์ด๋ฐ๋ฅผ ๋งํด์" ๊ฒ์์ ๊ฐ๋ฅด์ณ์ฃผ๊ณ ์๋ค. ๋ฐฑ์ค์ด๊ฐ ์ ์๋ฅผ ํ๋์ฉ ์ธ์น ๋๋ง๋ค ๋์์ ์ง๊ธ๊น์ง ๋ฐฑ์ค์ด๊ฐ ๋งํ ์ ์ค์์ ์ค๊ฐ๊ฐ์ ๋งํด์ผ ํ๋ค. ๋ง์ฝ, ๊ทธ๋์ ๋ฐฑ์ค์ด๊ฐ ์ธ์น ์์ ๊ฐ์๊ฐ ์ง์๊ฐ๋ผ๋ฉด ์ค๊ฐ์ ์๋ ๋ ์ ์ค์์ ์์ ์๋ฅผ ๋งํด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด ๋ฐฑ์ค์ด๊ฐ ๋์์๊ฒ 1, 5, 2, 10, -99, 7, 5๋ฅผ ์์๋๋ก ์ธ์ณค๋ค๊ณ ํ๋ฉด, ๋์์ 1, 1, 2, 2, 2, 2, 5๋ฅผ ์ฐจ๋ก๋๋ก ๋งํด์ผ ํ๋ค. ๋ฐฑ์ค์ด๊ฐ ์ธ์น๋ ์๊ฐ ์ฃผ์ด์ก์ ๋, ๋์์ด ๋งํด์ผ ํ๋ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
โ๐ปํ์ด
์ ๋ง ๊ฐ๋จํ๊ฒ ๋ณด๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด์ ๊ฐ์ ๋ฃ์ ๋๋ง๋ค ์ ๋ ฌํด์ ํ ์ ์๋ค. ๊ทธ๋ฌ๋ ์๊ฐ๋ณต์ก๋๊ฐ O(n²logn)์ผ๋ก ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ฐ๋ฆฌ๋ ์ฐ์ ์์ ํ๋ฅผ ์ด์ฉํด์ ํ๋ฉด ๋๋ค. ๋ค๋ง, ์ด ๋ ์ต์ ํ๋ง ์ด๋ํ๋ค๋ฉด ์ํ๋ ์ถ๋ ฅ ๊ฐ์ด ๋์ค์ง ์๋๋ค. ๋ฐ๋ผ์ ์ต์ ํ๊ณผ ์ต๋ ํ์ ๋ ๊ฐ ๋ค ์ด์ฉํ๊ฒ ๋ค. ์ผ์ชฝ์ผ๋ก๋ ์ต๋ ํ์ ์ฌ์ฉํด์ ์์ ์๋ค๋ง ๋ชจ์๋๊ณ , ์ค๋ฅธ์ชฝ์๋ ์ต์ ํ์ ์ฌ์ฉํด์ ํฐ ์๋ค๋ง ๋ชจ์๋๊ฒ ๋ค.
๋จผ์ , ์ง์์ผ ๋์ ํ์์ผ ๋๋ฅผ ๊ณ ๋ คํ์ฌ ๊ธธ์ด๊ฐ ๊ฐ๋ค๋ฉด ์ผ์ชฝ์ ๋ฃ์ด์ฃผ๊ณ ๋ค๋ฅด๋ค๋ฉด ์ค๋ฅธ์ชฝ์ ๋ฃ์ด์ฃผ๊ฒ ๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ 1, 2, 5 ์์ผ๋ก ์ ๋ ฅ์ ๋ฐ๋๋ค๋ฉด left์ 1๊ณผ 5๊ฐ ๋ค์ด๊ฐ๊ณ right์๋ 2๊ฐ ๋ค์ด๊ฐ ๊ฒ์ด๋ค. ์ฐ๋ฆฌ๋ 2์ 5๋ฅผ ๋นผ์ ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค. ๊ทธ๋ฌ๋ฉด left๋ ์ค์ ๋ก๋ [-2, -1], right๋ [5]๊ฐ ๋ ๊ฒ์ด๋ค.
๋ฌธ์ ์์ ์ฃผ์ด์ง ์ ๋ ฅ๊ฐ๋๋ก ๋ฃ์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ฐ๋ฆฌ๋ left์ ์๋ ๊ฐ์ -๋ฅผ ๋ถ์ฌ์ ์ถ๋ ฅํ๋ฉด ์ค์๊ฐ์ ๋์ถํ ์ ์๋ค.
๐ป์ฝ๋
import sys
from heapq import heappush, heappop
input = sys.stdin.readline
N = int(input()) # ์ ์์ ๊ฐ์
left_nums = []
right_nums = []
for i in range(1, N+1):
n = int(input())
# ์ด ๊ธธ์ด๊ฐ ์ง์์ผ ๋์ ํ์์ผ ๋๋ฅผ ๊ณ ๋ ค.
if len(left_nums) == len(right_nums):
heappush(left_nums, -n)
else:
heappush(right_nums, n)
# ๋ฃจํธ ๊ฐ์ ๋น๊ตํ์ฌ ์์ ์๋๋ก ํฐ ์๋๋ก ๋ชจ์. ์ ๋ ฌํ๋ค๊ณ ์๊ฐํ๋ฉด ๋จ.
if right_nums and -left_nums[0] > right_nums[0]:
right = heappop(right_nums)
left = heappop(left_nums)
heappush(right_nums, -left)
heappush(left_nums, -right)
print(-left_nums[0])
๐ํ๊ธฐ
๋๋ ์ฒ์์ ๋ฌธ์ ๋ฅผ ์ ๊ทผํ์ ๋ ์ต์ ํ์ผ๋ก ํ๋ฉด ์์์ ์์ ์๋๋ก ์ ๋ ฌ ๋๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๊ทธ๋ฌ๋ ํ์ผ๋ก ๋ฃ์ ํ ์ต์ํ์ ์ต์ํ๋๋ก ์ต์๊ฐ์ popํ๊ณ ์ต๋ํ์ด๋ฉด ์ต๋๊ฐ์ popํ๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค. ์ด ๋ฌธ์ ๋ฅผ ํ๋ฉฐ ํ์ ๋ํด์ ๋ค์ ์ ๋ฆฌํ ์ ์์๋ค.
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1202. ๋ณด์ ๋๋/Python - Gold2 (0) | 2025.02.28 |
---|---|
[๋ฐฑ์ค] 1715. ์นด๋ ์ ๋ ฌํ๊ธฐ/Python - Gold4 (0) | 2025.02.26 |
[ํ๋ก๊ทธ๋๋จธ์ค] [1์ฐจ]์บ์/Python - Lv.2 (0) | 2025.02.21 |
[๋ฐฑ์ค] 18870. ์ขํ ์์ถ/Python - Silver2 (0) | 2025.02.19 |
[๋ฐฑ์ค] 2206. ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ/Python - Gold 3 (0) | 2025.02.12 |