반응형
[풀이]
function solution(x) {
const newArr = x
.toString()
.split("")
.map((arg) => Number(arg));
let sum = 0;
for (let i = 0; i < newArr.length; i++) {
sum += newArr[i];
}
return x % sum === 0 ? true : false;
}
1. 새로운 배열을 담을 변수를 만들고 x를 문자열로 변환해준다. (배열에 담기위해서..)
2. 그리고 문자열을 쪼개 배열로 만들고, map 함수를 이용해 숫자로 바꿔준다. 그러면 [1, 0]이 되어 있을 것.
3. 합한 수를 담을 변수를 만든다 (sum)
4. for문을 새로운 배열의 길이만큼 순회시키고, sum 변수에 새로운 배열의 인덱스값들을 모두 누적해 더해준다.
newArr[0] = 1, newArr[1] = 0 이므로 sum은 1 + 0 = 1
5. x를 sum으로 나누어 떨어지면 true반환, 아니면 false반환한다.
10 % 1 = 0 이므로 true
[코드 리뷰]
function solution(x) {
const newArr = x
.toString()
.split("")
.map(Number);
let sum = 0;
for (let i = 0; i < newArr.length; i++) {
sum += newArr[i];
}
return x % sum === 0 ? true : false;
}
1. map((arg) => Number(arg)) 를 map(Number)로 바꿔도 숫자로 변환된다.
[추가 코드]
1. reduce 이용
function solution(x) {
const digitSum = String(x)
.split("")
.reduce((acc, cur) => acc + Number(cur), 0);
return x % digitSum === 0 ? true : false;
}
x를 문자열로 바꾸고 쪼갠 후, 숫자로 변환 한 값을 누적해서 더해준다.
예) 10 일 때, 위 과정을 진행하고 reduce 시킬 때 [1, 0] 이므로
초기값 0 + 현재값 1 = 1 이되며
누적값 1 + 현재값 0 = 1 이 결과값이 된다.
'코딩 테스트 > Programmers - 1' 카테고리의 다른 글
[JS] 폰켓몬 (0) | 2022.10.06 |
---|---|
[JS] x만큼 간격이 있는 n개의 숫자 (0) | 2022.10.04 |
[JS] 정수 내림차순으로 배치하기 (0) | 2022.10.04 |
[JS] 자연수 뒤집어 배열로 만들기 (0) | 2022.10.04 |
[JS] 정수 제곱근 판별 (0) | 2022.10.04 |