문제
n개의 자연수가 입력되면, 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력. 단, 자릿수의 합이 같은 경우 원래 숫자가 큰 경우를 답으로 함.
풀이 1
function solution(n, arr) {
let answer,
max = Number.MIN_SAFE_INTEGER;
for (let x of arr) {
let sum = 0,
tmp = x;
while (tmp) {
sum += tmp % 10;
tmp = parseInt(tmp / 10);
}
if (sum > max) {
max = sum;
answer = x;
} else if (sum === max) {
if (x > answer) answer = x;
}
}
return answer;
}
let arr = [128, 460, 603, 40, 521, 137, 123];
console.log(solution(7, arr));
sum+=tmp%10
: 10으로 나눈 나머지 즉, 일의 자리로 쪼갠 값을 sum에 누적tmp = parseInt(tmp/10)
: tmp를 10으로 나눈 몫(정수)while(tmp)
: tmp 가 0이 될 때 까지 반복
풀이 2
function solution2(n, arr) {
let answer,
max = Number.MIN_SAFE_INTEGER;
for (let x of arr) {
let sum = x
.toString()
.split('')
.reduce((a, b) => a + Number(b), 0);
if (sum > max) {
max = sum;
answer = x;
} else if (sum === max) {
if (x > answer) answer = x;
}
}
return answer;
}
console.log(solution2(7, arr));
- x를 문자화 하여 쪼갠 뒤 reduce로 누적 값 리턴
'Algorithm & 자료구조 > (인프런) 자바스크립트 알고리즘 문제풀이' 카테고리의 다른 글
[알고리즘]멘토링 - 완전탐색 (0) | 2022.02.03 |
---|---|
[알고리즘]뒤집은 소수(소수 판별하기) (0) | 2022.02.02 |
[알고리즘]문자열 압축 (0) | 2022.02.01 |
[알고리즘]가장 짧은 문자 거리 (0) | 2022.02.01 |
[알고리즘]숫자만 추출하기 (0) | 2022.01.31 |