본문 바로가기

백준2985 - 세 수 (배열에 함수저장) JS 본문

개발/algorithm

백준2985 - 세 수 (배열에 함수저장) JS

자전하는명왕성 2023. 9. 28. 09:32

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

 

이 문제는 주어진 세 가지 수와, 사칙연산 기호 네 개 중 하나, 등호를 하나써서 만들 수 있는 올바른 등식을 출력하는 문제다.

따라서, 총 8번의 조건 분기가 필요하고, if문 또한 8번 사용해야 한다.

 

하지만 많은 if문을 사용하는 것을 싫어하는 나로서는 

예전 포스팅에서 객체에 함수를 저장해 조건을 나누고 문제를 해결했던 것처럼, 이번에는 배열에 함수를 넣어 문제를 해결했다.

2023.09.11 - [개발/algorithm] - 백준 11586 - 지영 공주님의 마법 거울 (객체에 함수 저장) JS

 

소스 코드

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

function solution(data) {
  // 배열
  const mathTable = [
    ((a,b,c)=> a + b === c && `${a}+${b}=${c}`),
    ((a,b,c)=> a === b + c && `${a}=${b}+${c}`),
    ((a,b,c)=> a - b === c && `${a}-${b}=${c}`),
    ((a,b,c)=> a === b - c && `${a}=${b}-${c}`),
    ((a,b,c)=> a * b === c && `${a}*${b}=${c}`),
    ((a,b,c)=> a === b * c && `${a}=${b}*${c}`),
    ((a,b,c)=> a / b === c && `${a}/${b}=${c}`),
    ((a,b,c)=> a === b / c && `${a}=${b}/${c}`),
  ]

  for(let i = 0 ; i < mathTable.length ; i++) {
    const [x,y,z] = data.split(' ').map(Number)
    
    // 만약 mathTable[i](x,y,z)에서 값이 반환되는 경우
    // 해당 등식은 옳은 값이므로 출력하고 return
    if(mathTable[i](x,y,z)) {
      console.log(mathTable[i](x,y,z))
      return
    }
  }
}

solution(input)

 

'개발 > algorithm' 카테고리의 다른 글

프로그래머스 - Lv.2 파일명 정렬 JS  (0) 2023.09.30
백준1940 - 주몽 (정렬, 투포인터) JS  (0) 2023.09.29
백준1065 - 한수 JS  (0) 2023.09.27
백준1149 - RGB거리 (DP) JS  (1) 2023.09.26
백준14501 - 퇴사(DP) JS  (0) 2023.09.25
Comments