[๋ฐฑ์ค 2012๋ฒ] [๐ฅ3] ๋ฑ์ ๋งค๊ธฐ๊ธฐ (python)
๋ฌธ์
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)
๋๊ธ๋จ๊ธฐ๊ธฐ