[Node.js] 백준 #5576 : 콘테스트

전인혁·2022년 5월 27일
1

백준 Algorithm

목록 보기
2/5
post-thumbnail

문제 분류

정렬

문제

https://www.acmicpc.net/problem/5576

최근 온라인에서의 프로그래밍 콘테스트가 열렸다. 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

Solution

  • 입력 배열 분할
    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);
profile
Front-end Developer

0개의 댓글