[백준 | Javascript] 2309

박기영·2023년 1월 8일
0

백준

목록 보기
126/127
post-custom-banner

백준 2309번 일곱 난쟁이

solutoin

const fs = require("fs");
const heights = fs.readFileSync("/dev/stdin").toString().trim().split("\n").map(Number);

let dwarf = null;

for (let i = 0; i < heights.length - 1; i++) {
  for (let j = i + 1; j < heights.length; j++) {
    const sum = heights.reduce((acc, curr) => {
      return acc + curr;
    }, 0);

    if (sum - heights[i] - heights[j] === 100) {
      dwarf = heights.filter(
        (height) => height !== heights[i] && height !== heights[j]
      );

      break;
    }
  }

  if (dwarf) {
    break;
  }
}

console.log(dwarf.sort((a, b) => a - b).join("\n"));

연산에서 제외할 두 명의 난쟁이를 중첩 for문으로 선택한다.

전체 합 - 난쟁이 1 - 난쟁이 2 === 100이 되어야 문제 조건을 만족하는데
이 때, 선택된 두 난쟁이를 제외한 나머지 난쟁이들만 추려서 내부 for문을 빠져 나간다.
외부 for문까지 나가서 정답을 출력해야하는데,
변수 dwarfnull이 아닌 다른 값을 가지는 경우는 문제를 맞췄을 때이므로,
이 때, 외부 for문을 빠져 나간다.

필자는 입력값을 받아올 때 trim()을 안해서 엄청 헤맸다.

참고 자료

tesseractjh님 블로그

profile
나를 믿는 사람들을, 실망시키지 않도록
post-custom-banner

0개의 댓글