๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[๋ฐฑ์ค€] 2012๋ฒˆ: ๋“ฑ์ˆ˜ ๋งค๊ธฐ๊ธฐ(๊ทธ๋ฆฌ๋””)

by ์ฃผ๋ฐœ2 2020. 2. 8.
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/2012

 

2012๋ฒˆ: ๋“ฑ์ˆ˜ ๋งค๊ธฐ๊ธฐ

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

www.acmicpc.net

์ฝ”๋“œ

import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int N = scan.nextInt();
		int B = 1;		// ์‹ค์ œ ๋“ฑ์ˆ˜
		long sum = 0;	// ๋ถˆ๋งŒ๋„ ํ•ฉ ์ตœ์†Ÿ๊ฐ’
		int[] arr = new int[N];
		
		for(int i=0; i<arr.length; i++)
			arr[i] = scan.nextInt();
		
		Arrays.sort(arr);
		
		for(int i=0; i<arr.length; i++) {
			sum += Math.abs(arr[i] - (i+1));			
		}
		
		System.out.println(sum);
		scan.close();
	}

}

ํ’€์ด

๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์˜€๋‹ค. ๋ถˆ๋งŒ๋„ ํ•ฉ์˜ ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

๋ถˆ๋งŒ๋„์˜ ํ•ฉ์ด ์ตœ์†Œ๊ฐ€ ๋˜๋ ค๋ฉด ํ•™์ƒ์ด ์˜ˆ์ƒํ•œ ๋“ฑ์ˆ˜์™€ ์‹ค์ œ ๋“ฑ์ˆ˜๊ฐ€ ์ตœ์†Ÿ๊ฐ’์ด ๋˜๋„๋ก ์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๋”ฐ๋ผ์„œ ํ•™์ƒ์ด ์˜ˆ์ƒํ•œ ๋“ฑ์ˆ˜๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ , ์ž‘์€๊ฒƒ๋ถ€ํ„ฐ 1๋“ฑ, 2๋“ฑ, 3๋“ฑ, ... ๋นผ์ฃผ๋ฉด ๋œ๋‹ค.

* ๋ฌธ์ œ์—์„œ N์˜ ๋ฒ”์œ„๊ฐ€ 500,000 ์ธ๋ฐ, ๋งŒ์•ฝ ๋ชจ๋“  ํ•™์ƒ์ด ์ž์‹ ์˜ ๋“ฑ์ˆ˜๋ฅผ 1๋กœ ์˜ˆ์ƒํ• ๊ฒฝ์šฐ,

|1-500,000| x 500,500 ์ด ๋˜์–ด์„œ int์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ๋‹ค.

๋”ฐ๋ผ์„œ ๋ถˆ๋งŒ๋„์˜ ์ž๋ฃŒํ˜•์„ long ์œผ๋กœ ์„ ์–ธํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€