문제(출처: 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) 출력
'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글
[Baekjoon] 15688_수 정렬하기 5 (0) | 2023.09.29 |
---|---|
[Baekjoon] 1758_알바생 강호 (0) | 2023.09.28 |
[Baekjoon] 18310_안테나 (0) | 2023.09.26 |
[Baekjoon] 11536_줄 세우기 (0) | 2023.09.25 |
[Baekjoon] 11256_사탕 (0) | 2023.09.22 |