작심 365

[백준 2012번] 등수 매기기 - (java) 본문

코테/백준

[백준 2012번] 등수 매기기 - (java)

eunKyung KIM 2024. 12. 18. 20:55

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

 

📌 문제 탐색하기

 

각 등수는 무조건 한사람한테만 부여되야 하기 때문에 예상 등수와 실제 등수의 차이가 가장 가까운 등수를 진짜 등수로 지정하면 된다. 

등수는 1 ~ N 번까지 주어지기 때문에 예상 등수도 오름차순 정렬을 해서 순차적으로 등수를 가져가도록 하면 결국 불만도의 합이 최소가 나오게 된다.

 

📌 코드 설계하기

1. Scanner 함수를 통해서 사용자에게 정수 n 값과 예상 등수들을 입력받는다.

2. 예상 등수가 저장된 배열을 오름차순 정렬한다.

3. 배열의 인덱스 번호를 활용해서 반복문을 통해 예상 등수와 실제 등수의 차이를 저장한다.

 

📌 코드

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

// 등수 매기기
public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] scores = new int[n];
		long result = 0;
		
		for(int i=0; i<n; i++){
			scores[i] = sc.nextInt();
		}
		
		Arrays.sort(scores); // 배열 오름차순 정렬
		
		
		for(int i=0; i<n; i++){
			result += Math.abs(scores[i]-(i+1));
		}

		System.out.println(result);
		
		
	}
}
Comments