문제
4 × 3 = 12이다.
이 식을 통해 다음과 같은 사실을 알 수 있다.
3은 12의 약수이고, 12는 3의 배수이다.
4도 12의 약수이고, 12는 4의 배수이다.
두 수가 주어졌을 때, 다음 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);
'끄적 > Algorithm' 카테고리의 다른 글
삽입정렬 초간단 설명 및 Node js 구현, 백준 2750번 (0) | 2021.10.16 |
---|---|
[알고리즘] 백준 - 1436 영화감독 숌 해설, node js 구현 (0) | 2021.10.10 |
[알고리즘] 백준 - 1018 체스판 다시 칠하기 해설, node js 구현 (0) | 2021.10.03 |
[알고리즘] 백준 - 7468 덩치 해설, node js 구현 (0) | 2021.09.26 |
[알고리즘] 백준 - 2231 분해합 해설, node js 구현 (0) | 2021.09.26 |