[TIL]231120_배열API

ㅇㅖㅈㅣ·2023년 11월 20일
2

Today I Learned

목록 보기
29/93
post-thumbnail

👩🏻‍💻 Today Learn

  • 알고리즘 2문제
  • FanLetter-Project 미완성 제출
  • 스탠다드반 강의듣기

🔐 알고리즘 문제풀이

문제 1) 하샤드 수

양의 정수 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를 반환하게 해주었더니 성공


문제 2) 두 정수 사이의 합

두 정수 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문서에서 찾아보면서 정리해보았다)

배열 API

forEach()

: 각 배열 요소에 대해 제공된 함수를 한 번씩 실행한다.

const array1 = ['a', 'b', 'c'];

array1.forEach((element) => console.log(element));

// "a"
// "b"
// "c"

filter()

: 주어진 배열에서 함수의 조건에 맞는 일부 요소만 필터링하여 반환해준다.

const words = ['spray', 'elite', 'exuberant', 'destruction', 'present'];

const result = words.filter((word) => word.length > 6);

console.log(result);
// ["exuberant", "destruction", "present"]

map()

: 배열 내의 모든 요소 각각의 수에 맞게 주어진 함수를 호출한 결과를 모아 새로운 배열로 반환해준다.

const array1 = [1, 4, 9, 16];

const map1 = array1.map((x) => x * 2);

console.log(map1);
// [2, 8, 18, 32]

reduce()

: 배열의 각 요소에 대해 주어진 리듀서 함수를 실행하고, 하나의 결과값을 반환해준다.

reduce()에는 누산기가 포함되어 있기 때문에 배열의 각 요소에 대한 함수를 실행하고 누적된 값을 출력할때 용이하다!

이렇게만 보면 이해하기 어려울 수 있다!
일단 리듀서 함수를 네 개의 인자를 가지고 있다고 한다.

  • acc(누산기), cur(현재 값), idx(현재 인덱스). src(원본 배열)

기본형태

 arr.reduce(callback[, initialValue])

(추가로 정리해야할 부분)

push

pop

slice

splice

indexOf

includes

find

some

every

sort

join


✍🏻 회고

배열 메소드에 대해 주로 사용하는것 위주로만 보다가 다양한 것에 대해 알 수 있어서 유익했다. 그렇지만 단순하게 '아 더해주는거!' 라던가 '아 정렬해주는거!' 라고만 생각하는 것이 아니라 어떨때 사용하면 좋은지, 정확한 사용법에 대해 더 공부하면서 이 글을 수정해 나가려고 한다.

profile
웰씽킹_나는 경쟁력을 갖춘 FE개발자로 성장할 것이다.

0개의 댓글