BOJ[9094] - 수학적 호기심 by JavaScript
수학적 호기심
문제
언어
- JavaScript
순서도
- 각 테스트케이스마다
(a^2 + b^2 + m)/(a * b)가 정수인 정수 쌍 (a, b) 의 개수 구하기
문제 풀이 step 1
- 두 정수 n 과 m 이 주어졌을 때, 0 < a < b < n 인 정수 쌍 (a, b) 중에서
(a ^ 2 + b ^ 2 + m) / (a * b)가 정수인 쌍의 개수를 구하는 문제입니다. - 크게 어려운 부분은 없습니다. 그냥 2 중 반복문을 사용해서 모든 정수 쌍에 대해서 위의 식이 정수인지 검사해주면 됩니다.
- 그렇다면 정수 판별은 어떻게 할까요?? 기초적인 방법 2 가지가 있습니다.
- Number.isInteger()
- number % 1 === 0
- 추가 설명은 주석으로 작성하겠습니다.
후기
- JavaScript 에서 정수 판별을 처음 다뤄봐서 포스트하게 되었습니다.
소스 코드
const input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n");
const solution = (input) => {
let t = Number(input[0]);
let res = "";
let index = 1;
while (t-- > 0) {
const [n, m] = input[index++].split(" ").map(Number);
// 모든 정수 쌍에 대해서
let cnt = 0;
for (let i = 1; i < n; i++) {
for (let j = i + 1; j < n; j++) {
// 정수 판별
if (Number.isInteger((i * i + j * j + m) / (i * j))) cnt += 1;
}
}
res += `${cnt}\n`;
}
return res;
};
console.log(solution(input));