[Silver III] ๋ฑ์ ๋งค๊ธฐ๊ธฐ - 2012
์ฑ๋ฅ ์์ฝ
๋ฉ๋ชจ๋ฆฌ: 311344 KB, ์๊ฐ: 1864 ms
๋ถ๋ฅ
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ, ์ ๋ ฌ
๋ฌธ์ ์ค๋ช
2007๋ KOI์ N๋ช ์ ํ์๋ค์ด ์ฐธ๊ฐํ์๋ค. ๊ฒฝ์์ผ ์ ๋ ์ธ ์๋น์์ง์ผ์, ๋ชจ๋ ํ์๋ค์ ์์ ์ด N๋ช ์ค์์ ๋ช ๋ฑ์ ํ ๊ฒ์ธ์ง ์์ ๋ฑ์๋ฅผ ์ ์ด์ ์ ์ถํ๋๋ก ํ์๋ค.
KOI ๋ด๋น์กฐ๊ต๋ก ์ฐธ๊ฐํ ๊น์ง์ ์กฐ๊ต๋ ์ค์๋ก ๋ชจ๋ ํ์์ ํ๋ก๊ทธ๋จ์ ๋ ๋ ค ๋ฒ๋ ธ๋ค. 1๋ฑ๋ถํฐ N๋ฑ๊น์ง ๋์์ฐจ ์์ด ๋ฑ์๋ฅผ ๋งค๊ฒจ์ผ ํ๋ ๊น ์กฐ๊ต๋, ์ด์ฉ ์ ์์ด ๊ฐ ์ฌ๋์ด ์ ์ถํ ์์ ๋ฑ์๋ฅผ ๋ฐํ์ผ๋ก ์์๋ก ๋ฑ์๋ฅผ ๋งค๊ธฐ๊ธฐ๋ก ํ๋ค.
์์ ์ ๋ฑ์๋ฅผ A๋ฑ์ผ๋ก ์์ํ์๋๋ฐ ์ค์ ๋ฑ์๊ฐ B๋ฑ์ด ๋ ๊ฒฝ์ฐ, ์ด ์ฌ๋์ ๋ถ๋ง๋๋ A์ B์ ์ฐจ์ด (|A - B|)๋ก ์์นํํ ์ ์๋ค. ๋น์ ์ N๋ช ์ ์ฌ๋๋ค์ ๋ถ๋ง๋์ ์ด ํฉ์ ์ต์๋ก ํ๋ฉด์, ํ์๋ค์ ๋ฑ์๋ฅผ ๋งค๊ธฐ๋ ค๊ณ ํ๋ค.
๊ฐ ์ฌ๋์ ์์ ๋ฑ์๊ฐ ์ฃผ์ด์ก์ ๋, ๊น ์กฐ๊ต๋ฅผ ๋์ ์ด๋ฌํ ๋ถ๋ง๋์ ํฉ์ ์ต์๋ก ํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ฐ์ N์ด ์ฃผ์ด์ง๋ค. (1 โค N โค 500,000) ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ ๊ฐ ์ฌ๋์ ์์ ๋ฑ์๊ฐ ์์๋๋ก ์ฃผ์ด์ง๋ค. ์์ ๋ฑ์๋ 500,000 ์ดํ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ถ๋ง๋์ ํฉ์ ์ต์๋ก ํ ๋, ๊ทธ ๋ถ๋ง๋๋ฅผ ์ถ๋ ฅํ๋ค.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] expectRank = new int[n]; // ์์ ๋ฑ์๋ฅผ ๋ด์ ๋ฐฐ์ด
long disSat = 0; // ์ต์ ๋ถ๋ง๋์ ํฉ
for (int i = 0; i < n; i++) {
expectRank[i] = sc.nextInt();
}
Arrays.sort(expectRank); // ์์ ๋ฑ์๋ฅผ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
for (int i = 0; i < n; i++) {
disSat += Math.abs(expectRank[i] - (i+1)); // (|A - B|) ๋ถ๋ง๋์ ์ด ํฉ์ ์ต์๋ก ํ๊ธฐ
}
System.out.println(disSat);
}
}