Level 1) 평균 구하기, 약수의 합, 짝수와 홀수, 자릿수 더하기

Doozuu·2023년 2월 1일
0

프로그래머스 (JS)

목록 보기
37/183

📌 문제 1. 평균 구하기

문제 설명

정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.

제한사항

arr은 길이 1 이상, 100 이하인 배열입니다.
arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.

풀이

function solution(arr) {
    return arr.reduce((a,b) => a+b)/arr.length;
}



📌 문제 2. 약수의 합

문제 설명

정수 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;
}



📌 문제 3. 짝수와 홀수

문제 설명

정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.

제한 조건

num은 int 범위의 정수입니다.
0은 짝수입니다.

풀이

function solution(num) {   
   return num % 2 === 0 ?  "Even" :  "Odd";
}

삼항연산자의 특성을 이용하여 단축시킬 수 있다.

function evenOrOdd(num) {
  return num % 2 ? "Odd" : "Even";
}



📌 문제 4. 자릿수 더하기

문제 설명

자연수 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+"")

profile
모든게 새롭고 재밌는 프론트엔드 새싹

0개의 댓글