반응형

문제

4 × 3 = 12이다.

이 식을 통해 다음과 같은 사실을 알 수 있다.

3은 12의 약수이고, 12는 3의 배수이다.

4도 12의 약수이고, 12는 4의 배수이다.

두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.

  1. 첫 번째 숫자가 두 번째 숫자의 약수이다.
  2. 첫 번째 숫자가 두 번째 숫자의 배수이다.
  3. 첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다.

입력

입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 10,000이 넘지않는 두 자연수로 이루어져 있다. 마지막 줄에는 0이 2개 주어진다. 두 수가 같은 경우는 없다.

출력

각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다.

반응형

해설

isFactor 함수와 isMultiple 함수 두가지만 만들면 쉽게 풀 수 있다.

쉬운 문제인 만큼 해설만 있으면 충분할듯

코드

// const dataFile = './data';
const dataFile = '/dev/stdin';
const fs = require('fs');
const inputs = fs.readFileSync(dataFile).toString().split('\n').map(el => el.split(" ").map(el => parseInt(el)));

const run = (inputs) => {
  let i = 0;
  while(true) {
    const input = inputs[i]
    if(isLast(input)) { break; } 
    if(isFactor(input)) {
      console.log("factor")
    } else if (isMultiple(input)) {
      console.log("multiple")
    } else {
      console.log("neither")
    }
    i++;
  }
}

const isLast = (input) => {
  return input[0] == 0 && input[1] == 0;
}

const isFactor = (input) => {
  if(input[0] >= input[1]) {
    return false;
  }

  return input[1]%input[0] == 0
}

const isMultiple = (input) => {
  if(input[1] >= input[0]) {
    return false;
  }

  return input[0]%input[1] == 0
}
run(inputs);
반응형

+ Recent posts