코딩테스트를 슬슬 조금씩 풀어보려고 시작하는데
굉장히 쉬운 문제부터 오류가 나서 놀랬다.
정말 어이없는 실수로 안되는 거 였음
function solution(arr) {
var answer = 0;
var sum = 0;
for (var i = 0; i < arr.length; i++) {
sum = sum + arr[i];
}
sum / arr.length = answer; // -> answer = sum / arr.length;
return answer;
}
숫자로 이루어진 배열 평균 구하는 함수를 만드는데
7번째줄에... 너무 기본 숫자 연산식으로 생각하고 써내려가다가
저런 문장을 만들어 버려서 ChatGPT에 물어보고서야 바로 깨달아서 고침.
근데 이게 제일 기본 해답일뿐 더 간단한 식도 가능하다는 게 함정
다른 해답을 보던 중 새로 알게된 reduce 함수!!
안까먹게 잘 정리해봐야겠다.
array.reduce(callback[, initialValue])
// [이건 선택값으로 없어도 됨]
이렇게만 읽었을 땐 잘 이해가 안가서 진땀 좀 뺐네
어쨌든 reduce 함수는 배열을 순회하면서 각 요소에 대해 콜백 함수를 실행시키고,
콜백 함수의 반환 값을 accumulator에 계속해서 누적시킨다.
그리고 순회가 완료되면 accumulator의 최종 값을 반환한다.
이해하고 나니 원래 알던 반복문의 다른 버전을 알게된 기분이다.
그래서 reduce함수로 간단하게 배열평균은 구하면
function solution(arr) {
return arr.reduce((accum, current) => accum + current) / arr.length;
}
변수 선언 없이 return으로 바로 반환할 수도 있다는 걸 새롭게 알았다.
아직 화살표 함수도 익숙치 않아서 더 쓰기가 어렵게 느껴진다.
function solution(n){
var answer = 0;
while (n > 0) {
answer = answer + n % 10;
n = n / 10;
}
return answer;
}