백준

백준 2012 등수 매기기(Java)

Park DJ 2023. 2. 5. 01:35

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

 

2012번: 등수 매기기

첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다.

www.acmicpc.net


 

해석 및 팁

 


 

이 문제는 실제등수와 예상등수의 차이를 최소화해야 하는 문제이므로 먼저 예상등수를 오름차순으로 정렬한 후에 빼주면 됩니다.

 


 

Java 코드

 


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

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    long sum = 0;
    int n = sc.nextInt();
    int[] arr = new int[n + 1];
    
    for(int i = 1; i <= n; i++) arr[i] = sc.nextInt();

    Arrays.sort(arr);

    for(int i = 1; i <= n; i++) sum += (Math.abs(arr[i] - i));

    System.out.println(sum);
  }
}