반응형
백준 1735번 분수합 (javascript, node.js)
문제
- 분수 A/B는 분자가 A, 분모가 B인 분수를 의미한다. A와 B는 모두 자연수라고 하자.
- 두 분수의 합 또한 분수로 표현할 수 있다. 두 분수가 주어졌을 때, 그 합을 기약분수의 형태로 구하는 프로그램을 작성하시오. 기약분수란 더 이상 약분되지 않는 분수를 의미한다.
입력
- 첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.
출력
- 첫째 줄에 구하고자 하는 기약분수의 분자와 분모를 뜻하는 두 개의 자연수를 빈 칸을 사이에 두고 순서대로 출력한다.
예제입력 1
2 7
3 5
예제출력 1
31 35
문제풀이
- 주어진 두 개의 분수의 합을 구하고 기약분수의 형태로 출력하는 프로그램 구현
- 두개의 분수를 더한다.
- 더해진 분수의 분모와 분자의 최대 공약수를 구한다.
- 분수의 분모와 분자를 최대 공약수로 나눠준다.
// 1735번 분수합
// 주어진 분수의 합을 기약분수의 형태로 구하는 프로그램 구현
// 두개의 분수를 먼저 더해준다.
// 더해진 분수의 분모와 분자의 최대 공약수를 구한 후
// 최대 공약수로 분수와 분모를 나눠주면 기약분수 완성
const fs = require("fs");
const file = process.platform === "linux" ? "dev/stdin" : "./text.txt";
const input = fs.readFileSync(file).toString().trim().split("\n");
// a= 분자 , b= 분모
const [a, b] = input[0].split(" ");
const [a1, b2] = input[1].split(" ");
// 분수 더하기
const nume = a * b2 + b * a1;
const denom = b2 * b;
//최대 공약수
function gcd(a, b) {
if (b === 0) {
return a;
} else {
return gcd(b, a % b);
}
}
// 기약분수를 구하기 위해 더한 분수에 나눠질 최대공약수
const divide = gcd(nume, denom);
console.log(nume / divide, denom / divide);
'Algorithm_javascript > 15. 약수, 배수와소수2' 카테고리의 다른 글
# 백준 4948번 베르트랑 공준 (javascript, node.js) (0) | 2023.07.24 |
---|---|
# 백준 4134번 다음 소수 (javascript, node.js) (0) | 2023.07.22 |
백준 2485번 가로수 (javascrit, node.js, 자바스크립트, 노드) (2) | 2023.05.25 |
백준 13241번 최소공배수 (javascript, node.js) (0) | 2023.05.24 |
백준 1934번 최소공배수 (javascript, node.js) (0) | 2023.05.23 |