👩🏻💻 Today Learn
🔐 알고리즘 문제풀이
길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.
이때, a와 b의 내적은 a[0]b[0] + a[1]b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)
function solution(a, b) {
let answer = 0;
for(let i=0; i<a.length; i++){
answer += a[i]*b[i]
}
return answer;
}
익숙한 for문을 사용해서 풀어보았지만 참고할만한 다른사람의 풀이도 함께 가져와봤다.
function solution(a, b) {
return a.reduce((acc, _, i) => acc += a[i] * b[i], 0);
}
reduce() 사용!!
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
function solution(left, right) {
let answer = 0;
for (let i=left; i<=right; i++){
let leftRight=[];
for (let a=0; a<=i; a++){
if(i%a===0) leftRight.push(a) // 약수 구하기
}
leftRight.length%2===0 ? answer += i : answer -= i
}
return answer;
}
for문으로 left에서 right까지의 숫자를 돌고 다시 그 숫자들 하나씩 돌면서 약수를 구해 배열에 넣는다.
삼항연산자를 이용해 그 배열의 길이가 짝수이면 더해서 answer에 담고 홀수이면 빼준 후에 최종값을 반환해준다!
function solution(left, right) {
var answer = 0;
for (let i = left; i <= right; i++) {
if (Number.isInteger(Math.sqrt(i))) {
answer -= i;
} else {
answer += i;
}
}
return answer;
}
Number.isInteger()
메서드는 전달된 값이 정수인지 여부를 확인
Math.sqrt()
메서드는 숫자의 제곱근을 반환
✍🏻 회고
알고리즘 문제가 하나씩 다음단계 문제를 푸는데 체감으로는 10단계씩 건너뛰는 느낌이다. 이제는 메서드를 검색해보거나 다른사람의 풀이를 참고하지 않으면 턱턱막히는데 그래도 꾸준히 푸는게 중요하겠지 라며 위안을 삼아본다..
파이팅