🌞Algorithm/🔥Baekjoon

[Baekjoon] 2012_등수 매기기

뿌야._. 2023. 9. 27. 14:07

Silver III

문제(출처: 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