[백준] 2309 | 일곱 난쟁이 | 자바스크립트

문제

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

 

정답 코드

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";

const input = fs
  .readFileSync(filePath)
  .toString()
  .trim()
  .split("\n")
  .map((num) => Number(num));

function solution(input) {
  let result;

  const sum = input.reduce((acc, cur) => {
    return acc + cur;
  }, 0);

  // 이중 for문으로 두 명의 난쟁이를 찾는다
  for (let i = 0; i < input.length - 1; i++) {
    for (let j = i + 1; j < input.length; j++) {
      // 두 난쟁이를 제외했을 때 합이 100이라면
      if (sum - input[i] - input[j] === 100) {
        // 해당 두 난쟁이를 제외하고 남은 배열 생성
        result = input.filter((num) => num !== input[i] && num !== input[j]);
        return result.sort((a, b) => a - b).join("\n");
      }
    }
  }
}

console.log(solution(input));

9명 중 7명을 찾아내는 것을 9명 중 2명을 제거하는 방식으로 풀었다.

  • 이중 반복문으로 두 난쟁이 찾기
    • 두 난쟁이의 키를 제외했을 때 합이 100이 되는 경우, 나머지 요소를 filter 로 추출