[백준, JAVA] 2012번 : 등수 매기기

seunguk noh·2023년 8월 2일
0

Algorithm

목록 보기
15/23

1. 문제

2. 아이디어

  • 본인의 등수를 낮게 예상한 사람일 수록 실제 등수를 작게 매기는 것이 불만도가 최소이다.

  • 예상 등수를 오름차순으로 정렬하고, 실제 등수(1, 2, 3...)를 빼서 절댓값을 합한다.

  • 인물과 등수를 매칭해서 등수에 관한 수열을 출력하는 것이 아니라, 불만도 총합을 출력하는 것이기 때문에 단순히 정렬을 해도 무관하다.

  • 입력 값의 범위 때문에 int가 아니라 long을 사용해야 한다.

3. 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class BOJ_4_2012{
  
    public static void main(String[] args) throws NumberFormatException, IOException {
    	BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
    	int N = Integer.parseInt(bf.readLine());
    	int[] arr = new int[N+1];
    	for(int i=1; i<N+1; i++) {
    		arr[i]=Integer.parseInt(bf.readLine());
    	}
    	
    	long ans = 0;
    	Arrays.sort(arr); // 오름차순 정렬, 역순으로 체크해보자
    	
    	for (int i = 1; i < N+1; i++) {
			ans = ans + Math.abs(arr[i]-i);
		}
    	System.out.println(ans);
    }
}

4. 느낀점

0개의 댓글