
내풀이 function solution(n,a,b){ let num=0; while(true){ a=Math.ceil(a/2); b=Math.ceil(b/2); num++; if(a===b){ return num; } } } 다른사람풀이 function solution(n,a,b){ let num=0; while(a!==b){ a=Math.ceil(a/2); b=Math.ceil(b/2); num++; } return num; } 그냥 바로 풀렸다 내풀이나 다른사람풀이나 복잡도면에서는 차이가 없다. 근데 밑에풀이가 조금더 깔끔?해보이는

function solution(w, h) { return w*h-(w+h-gcd(w,h)); } function gcd(n1, n2) { return n1%n2 ? gcd(n2, n1%n2) : n2; } 이건그냥 수학문제다... 최대공약수 구하는 것빼고는 w와 h가 공약수가 있으면 문제를 w와 h를 공약수로 나눈 w'과 h'으로 나눌 수 있다. w'와 h'이 서로소일 때 대각선은 끝 꼭지점에 도달하기전 w'-1개의 세로선과 h'-1개의 가로선을 지나고 지날때마다 새로운 정사각형이 추가 된다. 그래서 첫 정사각형을 포함 1 + (w'-1) + (h'-1) = w' + h' - 1개의 정사각형을 지나게 되고 최대공약수를 다시 곱해주면 w + h - gcd(w,h)

처음 풀이 function solution(arr) { while(arr.length>2){ arr.push(lcm(arr[0],arr[1])); arr.splice(0,2); } if(arr.length===2){ return lcm(arr[0],arr[1]); } } function lcm(n1,n2){ let num=1; while(!(num%n1===0 && num%n2===0)){ num++; } return num; } 유클리드 호제법 적용 function solution(arr) { while(arr.length>2){ arr.push(arr[0]*arr[1]/gcd(arr[0],arr[1])); arr.splice(0,2); } if(arr.length===2){ return arr[0]*..