본문 바로가기

백준15702 - 중간고사 채점 node.js 본문

개발/algorithm

백준15702 - 중간고사 채점 node.js

자전하는명왕성 2024. 3. 16. 09:55

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

문제는 각 문제의 배점과 각 사람들의 결과가 주어졌을 때, 가장 높은 점수를 획득한 사람과 그 점수를 구하는 문제다.

 

문제 해결 방식

각 사람에 따라 획득한 점수를 구한 뒤 만약 해당 점수가 최댓값을 넘는다면, 최댓값과 현재 가장 높은 점수인 수험번호를 갱신하고

해당 점수와 최댓값이 같다면 해당 사람의 수험 번호만 갱신했다.

 

전체 소스 코드

const fs = require("fs");
const input = fs
  .readFileSync(process.platform === "linux" ? "/dev/stdin" : "입력.txt")
  .toString()
  .trim()
  .split("\n");

function solution(data) {
  const [[_, __], scores, ...matrix] = data.map((el) =>
    el.split(" ").map((v) => (!isNaN(v) ? Number(v) : v))
  );

  matrix.sort((a, b) => a[0] - b[0]);

  let v = Infinity,
    max = 0;

  matrix.forEach((el) => {
    const [k, ...rest] = el;
    const temp = rest.reduce((acc, cur, idx) => {
      return acc + (cur === "O" ? scores[idx] : 0);
    }, 0);

    if (temp > max) {
      max = temp;
      v = k;
    } else if (temp === max) v = Math.min(v, k);
  });

  console.log(v, max);
}

solution(input);
Comments