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)
}