본문 바로가기

알고스팟 풀이/그리디

[알고스팟/ALGOSPOT] 22. YULO

안녕하세요. 알고라파덕입니다.

22번 문제 YULO


이 YULO라는 문제는 그리디 문제입니다.


문제의 목적은 학생들의 점수가 주어지면, 이 학생들의 점수를 두 명씩 짝을 지어 평균값을 냅니다.

그리고 여기서 가장 큰 평균값을 가장 작게 만들었을 때 그 점수가 몇 점이 될지를 물어보는 문제입니다.

학생 수가 홀수이면 짝을 못 지은 한명은 그대로 점수가 됩니다.

ex) 35 85 94 76 40

점수가 이렇게 주어진다면

(35, 94) / (40, 85) / 76 이렇게 학생들을 묶어주고 기대값을 구합니다.

64.5 / 62.5 / 76이 되어 가장 큰 값이 76이 되는데

다른 방식으로 짝을 지어도 이 76보다 작은 기대값은 존재하지 않습니다.

따라서 답은 이 76이 됩니다.


YULO

출처 : https://algospot.com/judge/problem/read/YULO


문제

문보고등학교에서 프로그래밍을 가르치고 있는 Yulo.K 선생님은 요즘 고민이 생겼다. 공부를 잘하는 학생들은 점점 더 점수가 올라가고, 공부를 못하는 학생들은 점점 더 점수가 내려가서, 공부를 못하는 학생들이 점점 공부를 포기하고 있는 것이다. 어떻게 하면 이 문제를 해결할 수 있을까 고민하던 Yulo.K 선생님은 여러 책, 기사를 찾아보고 아래와 같은 새로운 채점 방식을 제안했다.

"다음 시험에는 모든 학생들을 두 명씩 짝을 지어서 두 학생의 평균 점수로 두 학생의 점수를 매길 거다. 내가 두 명씩 짝을 지어줄 테니까 서로 도와주면서 열심히 공부하길 바란다. 아, 그리고 만약에 전체 학생 수가 홀수면 한 명 남는 학생은 그냥 자기 점수를 그대로 받을 거다."

Yulo.K 선생님은 짝을 지어준 후 각 학생들의 기대 점수 중에 1등의 점수를 제일 작도록 하고 싶다. 기대 점수는 짝지어준 두 학생의 지난 시험 점수의 평균으로 한다. 학생 N명의 지난 시험 점수가 주어질 때, Yulo.K 선생님의 계획대로 짝을 지으면 1등의 기대 점수가 몇 점이 되는지 구하라.

입력

첫 번째 줄에는 테스트 케이스의 개수 T가 주어진다. ( T ≤ 50 )

각 테스트 케이스의 첫 번째 줄에는 자연수 N이 주어진다. ( 3 ≤ N ≤ 40 )

두 번째 줄에는 학생들의 지난 시험 점수를 나타내는 N개의 숫자가 입력된다.

시험 점수는 0점 이상 100점 이하의 정수다.

출력

각 테스트 케이스에 대해 한 줄에 1등의 기대 점수를 소수점 첫 번째 자리까지 출력한다.

예제 입력

3
3
48 96 73
4
0 0 98 99
5
35 85 94 76 40

예제 출력

73.0
49.5
76.0


생각해야 할 점
어떻게 짝을 지어야 하는가.
우리의 주된 목적은 짝을 지어서 최대한 모든 수를 다 작게 만드는 것입니다.
그렇게 하기 위해서는 작은 수와 큰 수를 짝을 지어 기대값을 낮춰야합니다.
그렇기 때문에 가장 작은 수는 가장 큰 수와 짝을 짓고
그 다음으로 작은 수는 그 다음으로 큰 수와 짝을 지어야 합니다.
 




감사합니다.


'알고스팟 풀이 > 그리디' 카테고리의 다른 글

[알고스팟/ALGOSPOT] 23. MEETING  (0) 2015.07.14
[알고스팟/ALGOSPOT] 3. STRJOIN  (0) 2014.12.04