작심 365
[백준 2012번] 등수 매기기 - (java) 본문
문제 : 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);
}
}
'코테 > 백준' 카테고리의 다른 글
[백준 13901번] 로봇 - (python) (0) | 2024.12.21 |
---|---|
[백준 2659번] 십자카드 문제 - (java) (3) | 2024.12.19 |
[백준 18230번] 2xN 예쁜 타일링 - (java) (1) | 2024.12.08 |
[백준 14247번] 나무 자르기 - (java,python) (2) | 2024.12.07 |
[백준 2529번] 부등호 - (java) (1) | 2024.12.05 |
Comments