본문 바로가기
코딩테스트

햐샤드 수 / Javascript [프로그래머스 Level1]

by 쎄정 2022. 4. 29.
728x90
반응형

접속 링크

https://programmers.co.kr/learn/courses/30/lessons/12947

 

코딩테스트 연습 - 하샤드 수

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하

programmers.co.kr

 

문제 설명

양의 정수가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자리수 합으니 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요

 

출력

x = 10 true
x = 12 true
x = 11 false
x = 13 false

 

풀이 설명

1. arr 배열에 입력된 값 10을 split 하여 [1, 0]으로 넣는다.

2. arr의 수만큼 반복문을 실행한다.

3. answer에 arr의 갑을 숫자로 변환하여 합산한다.

4. 입력값과 합산값의 나머지 값이 0인지 확인하여 하샤드 수를 확인한다.

 

풀이 코딩

    var answer = true;
    let arr = String(x).split("");
    console.log(arr);

    for(let i = 0; i< arr.length; i++){
        answer += Number(arr[i]);
        console.log(answer);
    }
    if (x % answer == 0)
        return true 
    return false

 

reduce()

reduce(), 배열의 각 요소를 순회하며 하나의 결과값으로 반환한다.

- 대표예제 : 배열의 값의 합 구하기

 

// prev : 누산값
// cur : 현재값

let arr = [1, 2, 3, 4, 5];
const result = arr.reduce((prev, cur) => {
	return prev + cur;     // 지금까지 계산된값에 현재값을 더한다.
}, 0) // 생략시 처음 배열 값이 들어감

// prev : 0, cur : 1  1
// prev : 1, cur : 2  3 
// prev : 2, cur : 3  6
// prev : 6, cur : 4  10  
// prev : 10, cur : 5  15

 

다른 예제

let user = [
  {name : "Mike", age : 30},
  {name : "Tom", age : 10},
  {name : "Jane", age : 27},
  {name : "Sue", age : 26},
  {name : "Harry", age : 42},
  {name : "Steve", age : 60},
];

let result = user.reduce((prev, cur) => {
  if(cur.age > 19){
    prev.push(cur.name);
  }
  return prev;
}, [])
console.log(result); //[ 'Mike', 'Jane', 'Sue', 'Harry', 'Steve' ]
console.log(user.length); // 6

 

728x90
반응형

댓글