👩🏻💻 Today Learn
🔐 알고리즘 문제풀이
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
function solution(x) {
let sum = 0;
const arr=String(x).split('')
for(let i=0; i<arr.length; i++){
sum += Number(arr[i]) // 배열이었으니까 숫자로 바꿔줘야함!
}
return x % sum=== 0 ? true : false;
}
자릿수를 더하기 위해 정수x를 문자열로 바꾸고 배열로 바꾸어주었다.
그리고 for문으로 각 자리의 수를 반복해서 더해주었고 다시 숫자로 바꿔주었다.
그렇게 더한 수를 x로 나눈 몫이 0이면 true 아니면 false를 반환하게 해주었더니 성공
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
function solution(a, b) {
let answer = 0;
if (a<=b) {
for (let i=a; i<=b; i++) {
answer += i
}
} else if (a>=b) {
for (let i=b; i<=a; i++) {
answer += i
}
}
return answer;
}
늘 그렇듯이 for문과 조건문 if.... 새로운 방법도 익혀야할텐데..
a,b중에 한쪽이 클 경우에 그 사이 숫자를 돌면서 다 더하는 방법을 이용해 풀었다.
💡 알게된 내용
스탠다드반의 1주차 강의를 들으면서 리액트 환경에서 Javascript의 배열API를 다루는 학습을 하였다.
다시한번 다지고 넘어가기!!
(MDN문서에서 찾아보면서 정리해보았다)
: 각 배열 요소에 대해 제공된 함수를 한 번씩 실행한다.
const array1 = ['a', 'b', 'c'];
array1.forEach((element) => console.log(element));
// "a"
// "b"
// "c"
: 주어진 배열에서 함수의 조건에 맞는 일부 요소만 필터링하여 반환해준다.
const words = ['spray', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter((word) => word.length > 6);
console.log(result);
// ["exuberant", "destruction", "present"]
: 배열 내의 모든 요소 각각의 수에 맞게 주어진 함수를 호출한 결과를 모아 새로운 배열로 반환해준다.
const array1 = [1, 4, 9, 16];
const map1 = array1.map((x) => x * 2);
console.log(map1);
// [2, 8, 18, 32]
: 배열의 각 요소에 대해 주어진 리듀서 함수를 실행하고, 하나의 결과값을 반환해준다.
reduce()에는 누산기가 포함되어 있기 때문에 배열의 각 요소에 대한 함수를 실행하고 누적된 값을 출력할때 용이하다!
이렇게만 보면 이해하기 어려울 수 있다!
일단 리듀서 함수를 네 개의 인자를 가지고 있다고 한다.
arr.reduce(callback[, initialValue])
(추가로 정리해야할 부분)
✍🏻 회고
배열 메소드에 대해 주로 사용하는것 위주로만 보다가 다양한 것에 대해 알 수 있어서 유익했다. 그렇지만 단순하게 '아 더해주는거!' 라던가 '아 정렬해주는거!' 라고만 생각하는 것이 아니라 어떨때 사용하면 좋은지, 정확한 사용법에 대해 더 공부하면서 이 글을 수정해 나가려고 한다.