등수매기기

_021119·2021년 4월 13일
0

알고리즘

목록 보기
2/9
import java.util.*;

public class Main{
   public static void main(String[] args){
      Scanner sc = new Scanner(System.in);
      long cnt = 0;  //불만도 합
      int n = sc.nextInt();
      ArrayList<Integer> list = new ArrayList<>();

      for(int i =0; i< n; i++){
          list.add(sc.nextInt());
      }

      Collections.sort(list);

      for(int i = 1; i<=list.size(); i++){
          cnt += Math.abs(i -list.get(i-1));
      }

          System.out.println(cnt);
      };
}

불만도의 최소값을 구하는 문제

학생들의 예상점수를 오름차순으로 정렬 후 , 나열된 순서대로 (1등..2등..) 뺀 절대값을 합해주면 된다...

설명을 잘 못하겟다..

정렬 후    :  [1,1,2,3,5]
원래 등수 :  [1,2,3,4,5]

Math.abs( )  : 절대값을 반환하는 함수!!!!!!!!!!

TIP !!!!!!!!!)

문제에서 N의 범위가 500,000 인데, 만약 모든 학생이 자신의 등수를 1로 예상할경우,

|1-500,000| x 500,500 이 되어서 int의 범위를 벗어난다.

따라서 불만도의 자료형을 long 으로 선언한다.

profile
내가 정리하고 싶어서 쓰는 로오그

0개의 댓글