HackerRank
[HackerRank] Between Two Sets (javascript)
수다쟁이직딩이
2022. 3. 4. 15:03
이 문제를 해결한 방법
1. input값의 의미를 파악한다.
2. a배열에서 끝자리 수와 b배열에서의 앞자리 수까지 전체 수를 for문으로 돌려준다.
ex) a = [2, 4]
b = [16, 32, 96]
4~16까지 수를 추려낸다.
3. for문에서 나온 값 중 a배열의 값에서 %계산을 구하여 a배열의 나머지가 0인 값만을 추려내여 cntArr배열에 추가. 단 a배열의 값이 for문에서 나온 값보다 작을 경우 그 반대의 계산을 한다.
ex) for문에서 나온 값 : 4~16
if(a[i]<4) 4%a[i]
if(a[i]>4) a[i]%4
4. b배열의 전체 값을 cntArr 배열의 각 값의 %계산했을 때 0일 경우 최종적인 값으로 간주한다.
function getTotalX(a, b) {
// Write your code here
let cntArr = [];
let resultArr = [];
//a배열 확인
for(let i=a[a.length-1];i<=b[0]; i++){
let chk = true;
for(let j=0; j<a.length; j++){
if(a[j]>i && a[j]%i != 0){
chk = false;
break;
}
else{
if(i%a[j] != 0){
chk = false;
break;
}
}
}
console.log(i + ' : ' + chk);
if(chk){
cntArr.push(i);
}
}
// b배열 확인
for(let i=0; i<cntArr.length; i++){
let chk = true;
for(let j=0;j<b.length; j++){
if(b[j]%cntArr[i] != 0){
chk = false;
break;
}
}
if(chk){
resultArr.push(cntArr[i]);
}
}
return resultArr.length;
}