작성
·
200
0
제가 영상 보기 전 혼자 풀어보았는데
function solution(n, arr) {
let answer = 0,
max_sum = 0;
for (let x of arr) {
let sum = 0,
temp = x;
while (temp) {
sum += temp % 10;
temp = Math.floor(temp / 10);
}
if (max_sum < sum || (max_sum === sum && answer < x)) {
answer = x;
max_sum = sum;
}
}
return answer;
}
let arr = [128, 460, 603, 40, 521, 137, 123];
console.log(solution(7, arr));
저는 if 문을 (max_sum < sum || (max_sum === sum && answer < x)) 이렇게 하나로 묶어서 썼는데 괜찮을까요 ?
그리고 선생님께서 max를 초기화할때 Number.MIN_SAFE_INTEGER 로 하셨는데 어차피 각자리수의 합이 0보다는 클것이라는 생각이 들어서 저의 경우엔 0으로 초기화 했는데 괜찮을까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
User00님, 자바스크립트 코드에 관한 질문을 주셔서 감사합니다.
if 조건을 하나로 묶어서 사용하는 부분은 코드를 간결하게 하며 로직을 정확히 표현한다면 전혀 문제가 없습니다. User00님이 작성하신 if 조건문은 각 자리수의 합(sum
)이 큰 숫자를 찾되, 같을 경우 원래 숫자(x
)가 더 큰 것을 찾는 로직으로 보입니다. 이는 매우 효과적인 방법이므로 괜찮습니다.
max_sum
을 0으로 초기화하는 부분 또한 가능합니다. 문제에서 주어진 arr
의 모든 요소가 양의 정수라면 각 자리수의 합이 언제나 0보다 클 것이기 때문에, Number.MIN_SAFE_INTEGER
보다 0으로 초기화하는 것이 더 직관적이고 적절할 수 있습니다. 단, 반드시 모든 입력 값이 양수라는 보장이 있을 때만 이 방식을 추천합니다.
따라서 User00님의 접근 방식은 특정 상황에서 더 나은 선택일 수 있으며 올바른 접근입니다.