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
반응형
'코딩테스트' 카테고리의 다른 글
콜라츠 추측 / Javascript [프로그래머스 Level1] (0) | 2022.04.29 |
---|---|
신고 결과 받기 / Javascript [프로그래머스 Level1] (0) | 2022.04.29 |
자릿수 더하기 / Javascript [프로그래머스 Level1] (0) | 2022.04.29 |
직사각형 좌표 구하기 / Javascript [프로그래머스 모의테스트] (0) | 2022.04.29 |
프로그래머스 Level1, 행렬의 덧셈 / Javascript (0) | 2022.04.28 |
댓글