[프로그래머스] Lv.0 - 잘라서 배열로 저장하기

·2023년 4월 5일
0

Programmers

목록 보기
13/30
post-thumbnail

✨ 문제설명

정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요

🔥 제한사항

  • 0 ≤ n ≤ 1,000,000

입출력 예


🌟 풀이

✅ 내 풀이

function solution(n) {
  let answer = 0;
  String(n).split('').map((n) => {
      answer += Number(n);
  });
  return answer;
}
  1. 문자열로 바꾼 n을 하나씩 잘라 배열에 넣는다.
  2. map() 함수를 이용해 배열에 있는 값을 하나씩 꺼내 더해준다.

✅ 다른 사람 풀이

function solution(n) {
  return n
    .toString()
    .split("")
    .reduce((acc, cur) => acc + Number(cur), 0);
}
  1. 내가 푼 풀이와 동일하다.
  2. reduce() 함수를 사용해 배열에 있는 값을 하나씩 꺼내 더해주었다.

내가 푼 풀이와의 차이는 String / .toString() 과 map() / reudce() 이다.

String() 과 .toString

  • String(): 어떤 형태이든 문자로 변환한다.
  • .toString(): null, undefined를 형 변환하려고 할 때 오류가 발생한다.
  • 참고: String() 과 .toString() 차이점

map() 과 reduce()

  • map(): 반복문을 돌며 배열 안의 요소들을 1대1로 짝지어 주는 것이다. 어떻게 짝지어줄 것인가 정의한 함수를 메서드의 인자로 넣어주면 된다.
  • reduce(): 배열의 각 요소에 대해 주어진 리듀서 (reducer) 함수를 실행하고, 하나의 결과값을 반환한다. 매개변수로 콜백함수를 받고, 콜백함수는 네 가지 인수를 받는다.
  • 참고:
    map, reduce 활용하기,
    Array.prototype.reduce(),
    javascript: Array.reduce() 사용 방법 정리

reduce만 있어도 다른 메서드들을 다 구현할 수 있다고 하는데, 직접 사용해본 것이 아니라서 완전히 와닿지 않았다. 다른 풀이에서 직접 사용해보며 익혀야 겠다..!!

profile
🎨

0개의 댓글