1 ๋ถ„ ์†Œ์š”

๋ฐฑ์ค€ ์‚ฌ์ดํŠธ ๋งํฌ

๋ฌธ์ œ

2007๋…„ KOI์— N๋ช…์˜ ํ•™์ƒ๋“ค์ด ์ฐธ๊ฐ€ํ•˜์˜€๋‹ค. ๊ฒฝ์‹œ์ผ ์ „๋‚ ์ธ ์˜ˆ๋น„์†Œ์ง‘์ผ์—, ๋ชจ๋“  ํ•™์ƒ๋“ค์€ ์ž์‹ ์ด N๋ช… ์ค‘์—์„œ ๋ช‡ ๋“ฑ์„ ํ•  ๊ฒƒ์ธ์ง€ ์˜ˆ์ƒ ๋“ฑ์ˆ˜๋ฅผ ์ ์–ด์„œ ์ œ์ถœํ•˜๋„๋ก ํ•˜์˜€๋‹ค.

KOI ๋‹ด๋‹น์กฐ๊ต๋กœ ์ฐธ๊ฐ€ํ•œ ๊น€์ง„์˜ ์กฐ๊ต๋Š” ์‹ค์ˆ˜๋กœ ๋ชจ๋“  ํ•™์ƒ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋‚ ๋ ค ๋ฒ„๋ ธ๋‹ค. 1๋“ฑ๋ถ€ํ„ฐ N๋“ฑ๊นŒ์ง€ ๋™์„์ฐจ ์—†์ด ๋“ฑ์ˆ˜๋ฅผ ๋งค๊ฒจ์•ผ ํ•˜๋Š” ๊น€ ์กฐ๊ต๋Š”, ์–ด์ฉ” ์ˆ˜ ์—†์ด ๊ฐ ์‚ฌ๋žŒ์ด ์ œ์ถœํ•œ ์˜ˆ์ƒ ๋“ฑ์ˆ˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ž„์˜๋กœ ๋“ฑ์ˆ˜๋ฅผ ๋งค๊ธฐ๊ธฐ๋กœ ํ–ˆ๋‹ค.

์ž์‹ ์˜ ๋“ฑ์ˆ˜๋ฅผ A๋“ฑ์œผ๋กœ ์˜ˆ์ƒํ•˜์˜€๋Š”๋ฐ ์‹ค์ œ ๋“ฑ์ˆ˜๊ฐ€ B๋“ฑ์ด ๋  ๊ฒฝ์šฐ, ์ด ์‚ฌ๋žŒ์˜ ๋ถˆ๋งŒ๋„๋Š” A์™€ B์˜ ์ฐจ์ด ( A - B )๋กœ ์ˆ˜์น˜ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹น์‹ ์€ N๋ช…์˜ ์‚ฌ๋žŒ๋“ค์˜ ๋ถˆ๋งŒ๋„์˜ ์ด ํ•ฉ์„ ์ตœ์†Œ๋กœ ํ•˜๋ฉด์„œ, ํ•™์ƒ๋“ค์˜ ๋“ฑ์ˆ˜๋ฅผ ๋งค๊ธฐ๋ ค๊ณ  ํ•œ๋‹ค.

๊ฐ ์‚ฌ๋žŒ์˜ ์˜ˆ์ƒ ๋“ฑ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊น€ ์กฐ๊ต๋ฅผ ๋„์™€ ์ด๋Ÿฌํ•œ ๋ถˆ๋งŒ๋„์˜ ํ•ฉ์„ ์ตœ์†Œ๋กœ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค N โ‰ค 500,000) ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ๊ฐ ์‚ฌ๋žŒ์˜ ์˜ˆ์ƒ ๋“ฑ์ˆ˜๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ์˜ˆ์ƒ ๋“ฑ์ˆ˜๋Š” 500,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

โ€Š ์ฒซ์งธ ์ค„์— ๋ถˆ๋งŒ๋„์˜ ํ•ฉ์„ ์ตœ์†Œ๋กœ ํ•  ๋•Œ, ๊ทธ ๋ถˆ๋งŒ๋„๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1

5
1
5
3
1
2

์˜ˆ์ œ ์ถœ๋ ฅ 1

3

ํ’€์ด

์‹ค์ œ ๋“ฑ์ˆ˜์™€ ์ฃผ์–ด์ง„ ๋“ฑ์ˆ˜๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋’ค, ์‹ค์ œ ๋“ฑ์ˆ˜์™€ ์ฃผ์–ด์ง„ ๋“ฑ์ˆ˜์˜ ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๋ˆ„์ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‹ค์ œ ๋“ฑ์ˆ˜์™€ ์ฃผ์–ด์ง„ ๋“ฑ์ˆ˜ ์‚ฌ์ด์˜ ์ฐจ์ด๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฝ”๋“œ

ver(1)

์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(nlogn)

import sys
input = sys.stdin.readline

# ์ž…๋ ฅ์„ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค.
n = int(input())

# ์ž…๋ ฅ๋œ ๊ฐ’๋“ค์„ ์ €์žฅํ•  ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
s = []

# ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
t = 0

# n๋ฒˆ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ์ž…๋ ฅ๊ฐ’์„ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
for i in range(n):
    s.append(int(input()))

# ์ž…๋ ฅ๊ฐ’๋“ค์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
s.sort()

# 1๋ถ€ํ„ฐ n๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ๊ฐ ๊ฐ’๊ณผ ํ•ด๋‹น ์ธ๋ฑ์Šค์˜ ์ฐจ์ด์˜ ์ ˆ๋Œ“๊ฐ’์„ ๊ฒฐ๊ณผ ๋ณ€์ˆ˜์— ๋ˆ„์ ํ•ฉ๋‹ˆ๋‹ค.
for i in range(1, n+1):
    t += abs(i - s[i-1])

# ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
print(t)

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ