🌞Algorithm/🔥Baekjoon
[Baekjoon] 2012_등수 매기기
뿌야._.
2023. 9. 27. 14:07
문제(출처: https://www.acmicpc.net/problem/2012)
< 등수 매기기 >
문제 풀이
입력받은 수를 정렬 후 등수를 하나씩 늘려가면서 예상 등수와 차이를 구해 더하면 된다.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
public class _2012_ { // 등수 매기기
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
PriorityQueue<Integer> queue = new PriorityQueue<>();
for (int i = 0; i < n; i++) {
queue.add(Integer.parseInt(bf.readLine()));
}
int idx = 1;
long result = 0;
while (!queue.isEmpty()) {
int num = queue.poll();
result += Math.abs(num - idx);
idx += 1;
}
System.out.println(result);
}
}
Main
변수)
n : 사람 수
queue : 우선순위 큐
idx : 실제 등수
result : 불만도 합
- 사람 수(n) 입력
- 예상 등수를 입력받아 우선순위 큐에 저장
- 우선순위 큐가 빌 때까지 반복
: 큐 값 poll()
: 실제 등수와 예상 등수의 차이를 구해 result에 더함
: 실제 등수 +1
- 불만도 합(result) 출력