정렬
최근 온라인에서의 프로그래밍 콘테스트가 열렸다. W 대학과 K 대학의 컴퓨터 클럽은 이전부터 라이벌 관계에있어,이 콘테스트를 이용하여 양자의 우열을 정하자라는 것이되었다.
이번이 두 대학에서 모두 10 명씩이 콘테스트에 참여했다. 긴 논의 끝에 참가한 10 명 중 득점이 높은 사람에서 3 명의 점수를 합산하여 대학의 득점으로하기로 했다.
W 대학 및 K 대학 참가자의 점수 데이터가 주어진다. 이때, 각각의 대학의 점수를 계산하는 프로그램을 작성하라.
입력
입력은 20 행으로 구성된다. 1 번째 줄부터 10 번째 줄에는 W 대학의 각 참가자의 점수를 나타내는 정수가 11 번째 줄부터 20 번째 줄에는 K 대학의 각 참가자의 점수를 나타내는 정수가 적혀있다. 이 정수는 모두 0 이상 100 이하이다.
출력
W 대학 점수와 K 대학의 점수를 순서대로 공백으로 구분하여 출력하라.
예제 입력 1
23
23
20
15
15
14
13
9
7
6
25
19
17
17
16
13
12
11
9
5
예제 출력 1
66 61
입력 배열 분할
W대학의 점수 10개 직후 K대학의 점수 10개가 입력되므로, 배열의 인덱스 0번~9번은 W[]에, 인덱스 10번~19번은 K[]에 push 한다.
정렬 함수 구현 (내림차 순)
2중 for loop를 사용하여 첫 번째 원소와 다음 원소를 비교하고, 다음 원소가 현재 원소보다 크다면 현재 원소와 자리를 바꾼다.
상위 3개 점수의 합 구하기
배열의 상위 인덱스 3개의 합을 구하는 sumTop3()를 구현한다.
결과 출력
answer[]에 각 대학의 상위 3개 점수의 합을 push()하고 합친 뒤, console에 출력한다.
// 입력 모듈 "fs" 불러오기
const fs = require("fs");
const input = fs
.readFileSync("./dev/stdin")
.toString()
.trim()
.split("\n")
.map((el) => parseInt(el));
// 정렬 함수 구현 (내림차 순)
function sort(arr) {
let tmp = 0;
for (let i = 0; i < arr.length; i++)
for (let j = i + 1; j < arr.length; j++)
if (arr[i] < arr[j]) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
return arr;
}
// 배열에서, 상위 인덱스 3개의 합 출력
function sumTop3(arr) {
let sum = 0;
for (let i = 0; i < 3; i++) sum += arr[i];
return sum;
}
// Solution 함수
function Solution(input) {
const W = [];
const K = [];
const answer = [];
for (let i = 0; i < 20; i++) {
if (i < 10) W.push(input[i]);
else K.push(input[i]);
}
answer.push(sumTop3(sort(W)));
answer.push(sumTop3(sort(K)));
console.log(answer.join(" "));
}
// Solution 실행
Solution(input);