본문 바로가기
알고리즘/백준

백준 2021번 - 등수 매기기 (Java 8)

by latissimus 2022. 3. 7.

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

 

2012번: 등수 매기기

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

www.acmicpc.net

그리디

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        int[] expectedRank = new int[N];
        for(int i=0; i<N; i++){
            expectedRank[i] = Integer.parseInt(br.readLine());
        }
        Arrays.sort(expectedRank);
        Long sum = 0L;
        for(int i=0; i<N; i++){
            sum += Math.abs(expectedRank[i] - (i+1));
        }
        System.out.println(sum);
    }

}

 

당장의 최선을 선택을 하는게 그리디 알고리즘이라는데 아직 잘 못알아봤다. 정렬을 하고 매칭해서 풀었다.

댓글