PS

[๋ฐฑ์ค€] 2548 ๋Œ€ํ‘œ ์ž์—ฐ์ˆ˜ with Python

ํ˜•์ค€_It's 2022. 7. 12. 15:52
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ BOJ 2548 ๋Œ€ํ‘œ ์ž์—ฐ์ˆ˜

๐Ÿ’ก ์กฐ๊ฑด

  1. ์ •๋ณด์ดˆ๋“ฑํ•™๊ต์˜ ์—ฐ์•„๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž์—ฐ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด๋ฅผ ๋Œ€ํ‘œํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ ์ž์—ฐ์ˆ˜์— ๋Œ€ํ•˜์—ฌ ์—ฐ๊ตฌํ•˜์˜€๋‹ค.
    ๊ทธ ๊ฒฐ๊ณผ ์–ด๋–ค ์ž์—ฐ์ˆ˜๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ฑ์งˆ์„ ๊ฐ€์ง€๋ฉด ๋Œ€ํ‘œ ์ž์—ฐ์ˆ˜๋กœ ์ ๋‹นํ•  ๊ฒƒ์ด๋ผ๊ณ  ํŒ๋‹จํ•˜์˜€๋‹ค.
    โ€œ๋Œ€ํ‘œ ์ž์—ฐ์ˆ˜๋Š” ์ฃผ์–ด์ง„ ๋ชจ๋“  ์ž์—ฐ์ˆ˜๋“ค์— ๋Œ€ํ•˜์—ฌ ๊ทธ ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๊ทธ ์ฐจ์ด๋“ค ์ „์ฒด์˜ ํ•ฉ์„ ์ตœ์†Œ๋กœ ํ•˜๋Š” ์ž์—ฐ์ˆ˜์ด๋‹ค.โ€
  1. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฃผ์–ด์ง„ ์ž์—ฐ์ˆ˜๋“ค์ด [4, 3, 2, 2, 9, 10]์ด๋ผ ํ•˜์ž.
    ์ด๋•Œ ๋Œ€ํ‘œ ์ž์—ฐ์ˆ˜๋Š” 3 ํ˜น์€ 4๊ฐ€ ๋œ๋‹ค.
    ์™œ๋ƒํ•˜๋ฉด (4์™€ 3์˜ ์ฐจ์ด) + (3๊ณผ 3์˜ ์ฐจ์ด) + (2์™€ 3์˜ ์ฐจ์ด) + (2์™€ 3์˜ ์ฐจ์ด) + (9์™€ 3์˜ ์ฐจ์ด) + (10๊ณผ 3์˜ ์ฐจ์ด) = 16,
    (4์™€ 4์˜ ์ฐจ์ด) + (3๊ณผ 4์˜ ์ฐจ์ด) + (2์™€ 4์˜ ์ฐจ์ด) + (2์™€ 4์˜ ์ฐจ์ด) + (9์™€ 4์˜ ์ฐจ์ด) + (10๊ณผ 4์˜ ์ฐจ์ด) = 16์œผ๋กœ ๊ฐ™๋‹ค.
  1. ์ฒซ์งธ ์ค„์—๋Š” ์ž์—ฐ์ˆ˜์˜ ๊ฐœ์ˆ˜ N์ด ์ž…๋ ฅ๋œ๋‹ค. N์€ 1 ์ด์ƒ 20,000 ์ดํ•˜์ด๋‹ค.
    ๋‘˜์งธ ์ค„์—๋Š” N๊ฐœ์˜ ์ž์—ฐ์ˆ˜๊ฐ€ ๋นˆ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ž…๋ ฅ๋˜๋ฉฐ, ์ด ์ˆ˜๋“ค์€ ๋ชจ๋‘ 1 ์ด์ƒ 10,000 ์ดํ•˜์ด๋‹ค.
  1. ์ด๋ถ„ํƒ์ƒ‰, ์ •๋ ฌ ์œ ํ˜•์˜ ๋ฌธ์ œ

๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

from sys import stdin


n = int(stdin.readline())
arr = list(map(int, stdin.readline().split()))
arr.sort()

l, r = 0, n
res = int(1e9)
ans = max(arr)

while l <= r:
    mid = (l + r) // 2
    temp = sum([abs(x - arr[mid]) for x in arr])

    if temp <= res:
        ans = min(ans, arr[mid])
        res = temp
        r = mid - 1

    else:
        l = mid + 1

print(ans)

๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

์˜ˆ์ œ

6
4 3 2 2 9 10

์‹คํ–‰๊ฒฐ๊ณผ

3

โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

  1. ์ด ๋ฌธ์ œ๋Š” ์ด๋ถ„ํƒ์ƒ‰ ๋ฌธ์ œ์ด๋‹ค. N์ด ์ตœ๋Œ€ 20000 ์ด๊ณ , ๊ฐ ์ˆซ์ž์˜ ์ฐจ์ด๋ฅผ ์ผ์ผํžˆ ๊ตฌํ•˜๋ฉด ๋ฐ˜๋“œ์‹œ TLE ์ด๋‹ค.
  1. ์ตœ์†Ÿ๊ฐ’์„ 0์œผ๋กœ, ์ตœ๋Œ“๊ฐ’์„ int(1e9)๋กœ ๋‘” ๋’ค, ์ด๋ถ„ํƒ์ƒ‰์„ ํ†ตํ•ด์„œ mid ๊ฐ’์„ ์ •ํ•ด์ค€๋‹ค
  1. ์ •ํ•ด์ค€ mid ๊ฐ’์œผ๋กœ ์ž…๋ ฅ๋ฐ›์€ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ ์›์†Œ๊ฐ’๊ณผ์˜ ์ฐจ์ด๋ฅผ ๋”ํ•ด ์ตœ์†Œ๊ฐ€ ๋˜๋Š”์ง€ ๊ณ„์‚ฐํ•œ๋‹ค.
  1. ๊ณ„์‚ฐํ•œ ๋Œ€ํ‘œ ์ž์—ฐ์ˆ˜๊ฐ€ ๊ธฐ์กด์˜ ๋Œ€ํ‘œ ์ž์—ฐ์ˆ˜๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ๊ฐฑ์‹ ํ•ด์ค€๋‹ค.
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€์ˆ˜0