정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
arr은 길이 1 이상, 100 이하인 배열입니다.
arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.
function solution(arr) {
return arr.reduce((a,b) => a+b)/arr.length;
}
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
n은 0 이상 3000이하인 정수입니다.
처음에 배열에 저장해서 reduce로 합하려고 했는데 한 케이스에서 런타임 에러가 발생했다. 그래서 배열 대신 숫자에 약수를 바로 더해주는 방식으로 바꾸었더니 해결되었다.
(시간 복잡도는 두 가지 방법 모두 O(n)이지만, 공간 복잡도가 O(n), O(1)으로 차이가 나기 때문에 이런 차이가 생긴 것 같다.)
function solution(n) {
let answer = 0;
for(let i=1;i<=n;i++){
if(n%i === 0) answer+=i;
}
return answer;
}
정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.
num은 int 범위의 정수입니다.
0은 짝수입니다.
function solution(num) {
return num % 2 === 0 ? "Even" : "Odd";
}
삼항연산자의 특성을 이용하여 단축시킬 수 있다.
function evenOrOdd(num) {
return num % 2 ? "Odd" : "Even";
}
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
N의 범위 : 100,000,000 이하의 자연수
숫자를 string으로 만들어서 배열에 쪼개 담아준 다음 숫자로 바꾸며 하나씩 더해준다.
function solution(n){
return [...n.toString()].reduce((acc,cur) => acc+Number(cur),0);
}
참고 | reduce에 초기값 0을 넣어주어야 하는 이유
0을 넣어서 초기값 acc을 정수화 해주기 위함이다.(문자열 + 정수 = 문자열 방지차원).
초기값을 지정하지 않는다면 Number(acc) + Number(curr)로 하면 된다.
메서드를 사용하지 않고 string으로 바꿀 수 있는 방법
(n+"")