백준 9613 JavaScript
수정하기
문서 생성 2021-11-04 21:39:21 최근 수정 2021-11-04 21:40:02
문제
풀이
BAEKJOON-2609 문제처럼 유클리드 호제법으로 각 행의 모든 조합의 최대공약수를 구해서 더해준다.
처음에 문제를 잘못 읽어서 첫번째 값이 테스트 케이스의 수인지 모르고 포함했었다. 며칠 전에 어떤 분이 코테 팁으로 문제를 여러 번, 잘~ 읽어야한다고 말해주신 내용이 기억난다.
const readFileSyncPath = require('path').basename(__filename).replace(/js$/, 'txt');// const readFileSyncPath = '/dev/stdin';let input = require('fs').readFileSync(readFileSyncPath).toString().trim().split("\n");let testCase = input[0];for (let i = 0; i < testCase; i++) {let numbers = input[i + 1].split(" ").map(v => Number(v));let numCnt = numbers[0];let sum = 0;for (let i = 1; i < numCnt; i++) {for (let j = i + 1; j <= numCnt; j++) {sum += getGCD(numbers[i], numbers[j]);}}console.log(sum);}// 최대공약수 구하기function getGCD(a, b) {while (b > 0) {let tmp = a;a = b;b = tmp % b;}return a;}