풀이 🙎🏻♂️ function solution(left, right) { let result = 0; const numArr = new Array(right - left + 1).fill().map((_, i) => left + i); for (let element of numArr) { let i = 1; const divisorArr = []; while (i
전체 글
유클리드 알고리즘 이란? 2개의 정수 또는 두 다항식의 최대공약수를 구하는 방법이다. 알고리즘은 "A > B 일때 A와 B의 최대공약수는 B와 나머지 R의 최대공약수와 같다." 큰 수(A)를 작은 수(B)로 나눈다. ( A > B ) 나눈 수(B)를 A로 대입 나머지(R)을 B로 대입하여 계속 나눠준다. ( A(B) % B(R) = (R)) 나머지가 0이 된다면 이전에 B에 대입한 R이 최대공약수이다. 예시 1071은 1029로 나누어 떨어지지 않기 때문에, 1071을 1029로 나눈 나머지를 구한다. ≫ 42 1029는 42로 나누어 떨어지지 않기 때문에, 1029를 42로 나눈 나머지를 구한다. ≫ 21 42는 21로 나누어 떨어진다. 반목문 const gcd =(a,b){ let tmp; while..
Learned map이나 filter 등 반복문과 비슷한 메서드를 이용할때 변수네임을 for문과 동일하게 i, j 로 가져가기. while문을 좀 더 다양한 방면으로 사용할 수 있게됐다. reduce와 Array생성자를 다양한 방법으로 사용할 수 있게됐다. Liked 피드백이 따로 없는 문제가 많았다👍 가독성면에서는 떨어졌어도 구글링 전혀 없이 풀어낸 문제도 있었다. Lacked 명확한 변수명 짓기가 아직도 부족하다. 문제 풀이에 급급해서 삼항연산자 등 가독성 좋은 방법을 많이 놓쳤다.
풀이 🙎🏻♂️ function solution(arr1, arr2) { return arr1.map((v, i) => v.map((value, idx) => value + arr2[i][idx])); } /* (풀이) 예전에 혼자 풀어봤던 문제다. map 메서드를 2중으로 사용해 2중 for문과 같은 용도로 사용하는데 첫번째 map에서 1차원 배열의 v값에서 한번 더 map을 주면 2차원 배열로 들어가게된다. 그렇게 주어진 배열의 요소 value와 arr2의 2차원배열을 주어진 index값으로 맞춰 주면 끝. */ 피드백 function solution(arr1, arr2) { return arr1.map((innerArr, i) => innerArr.map((value, j) => value + ar..
풀이 🙎🏻♂️ function solution(a, b) { return a.reduce((acc, cur, idx) => acc + cur * b[idx], 0); } /* (풀이) reduce를 이용해 a,b 의 곱을 누적값에 넣어줘서 풀이. */ 간단하게 두 배열의 같은 인덱스끼리 곱해주면 되는 문제다.
풀이 🙎🏻♂️ function solution(absolutes, signs) { return absolutes.reduce( (acc, cur, idx) => (signs[idx] ? acc + cur : acc - cur), 0 ); } 이전에 비슷한 문제가 있을때 map 을 2번 돌리는 형식으로 풀어냈었는데 리듀스 최고👍
풀이 🙎🏻♂️ function solution(arr) { return arr.length v !== Math.min(...arr)); } /* (풀이) 삼항연산자로 배열의 길이가 1이하면 [-1]을 리턴하고 아니면 filter 메서드로 min값과 같지 않은 값의 배열만 모아 반환한다. */ 비교적 쉽게 느껴진 문제였다.
풀이🙎🏻♂️ function solution(phone_number) { const starQuantity = phone_number.length - 4; return ( new Array(starQuantity).fill("*").join("") + phone_number.substring(starQuantity) ); } /* (풀이) 처음에는 new RegExp 로 만든 정규표현식과 replaceAll 을 이용해 풀이하려다 복잡해져서 이게 최선인가 고민해봤는데 배열을 이용하는걸로 변경. Array.from({ length: starQuantity }, (v) => (v = "*")) .join("") .concat(phone_number.substring(starQuantity)) 으로 테스트 성..