[백준-node.js-1934] 최소공배수

이태헌·2023년 6월 10일
0
post-thumbnail

문제

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

풀이

let input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n')
let N = input[0];
input.shift();

const nums = input.map(v => v.split(' ').map(v => +v));

function gcd(a, b) { // 유클리드 호제법
    
  if (a < b) {
    [a, b] = [b, a]; 
  }
    
  if (b === 0) {
    return a;
  } else {
    return gcd(b, a % b);
  }
}

console.log(nums.map((el) => (el[0]*el[1])/gcd(el[0], el[1])).join('\n'));
  1. 받아온 배열을 **gcd** 함수에 파라미터로 보내고 그 배열을 유클리드 호제법을 통해서 최소공약수를 구해준다.
  2. **gcd** 함수는 a,b 값을 비교해서 더 큰 수를 앞에다가 두고 나눈 나머지를 재귀함수를 통해서 b가 0이 될때까지 수행한다.
  3. 재귀함수에서 리턴된 값을 a,b를 곱한 값에다가 나눠주고 출력

0개의 댓글