아직도 헷갈리는 reduce

Parktaehoon·2022년 10월 9일
0

reduce 메서드에 대해서 다시 한번 정리해야겠다.
reduce 메서드는

const array1 = [1, 2, 3, 4];

// 0 + 1 + 2 + 3 + 4
const initialValue = 0;
const sumWithInitial = array1.reduce(
  (이전값, 현재값) => 이전값 + 현재값,
  설정값//생략가능
);

console.log(sumWithInitial);
// expected output: 10

보통 array.length 를 활용해서 평균 값을 구하는 데 많이 사용된다.
코딩테스트를 공부하고 있는데 많이 나오는 메서드니까 잘 공부하자.

q1.

어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.

function solution(n, t) {
    var answer = 0;
    // 세균 마리수 n
    // 경과 시간 t 
    // n * 2 ** t
    answer = n * 2 ** t
    return answer;
}

거듭제곱을 모른다면 사실 풀기 어려운 문제 였던거 같다. 수포자였던 나는 t (n 2) 로 생각했는데 내가 풀었어도 아닌거 같다 라는 생각이 많이 들었는데 거듭제곱을 알게 되니 아주 쉽게 풀렸다.
** 에 대해서 배울 수 있는 좋은 기회였던거 같다!

q2

정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

알아야되는 메서드 filter (주관적임)

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

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

console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]

filter 메서드는 array 안에서 조건에 맞는 거만 걸러서 반환해주는 메서드이다.

문제의 num_list 의 배열에 짝수와 홀수의 개수를 담은 배열을 return 하여야되기떄문에 num_list.filter(number => number%2 === 0).length로 짝수,홀수의 개수를 구하고 리턴한다.

function solution(num_list) {
    const evenLength = num_list.filter(n => n % 2 === 0).length;
    console.log(evenLength)
    return console.log([evenLength, num_list.length - evenLength]);
  }

q3.

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한사항
N의 범위 : 100,000,000 이하의 자연수

사용되어야되는 메서드 (내수준)
split로 다 쪼개고 reduce로 다 더하기.
위한 과정으로 문자열로 변환 후 다 쪼갠다음, map으로 모두 숫자로 변환

function solution(n){
	return n.toString().split("").map((n)=>parsInt(n)).reduce((a,b)=>(a+b),0)
}
profile
스스로 공부하는 내용 정리합니다.

0개의 댓글