질문
243
작성한 질문수 28
제가 영상 보기 전 혼자 풀어보았는데
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님의 접근 방식은 특정 상황에서 더 나은 선택일 수 있으며 올바른 접근입니다.
continue를 사용하는 이유
0
79
2
정렬 가능 여부 판단하기
0
64
2
알고리즘 학습법 관련해서 질문드립니다.
0
86
1
코드 리뷰 부탁드립니다!
0
90
1
indexOf를 사용해서 풀어보았습니다 !!
0
68
1
저는 이런식으로 구현 해보았습니다 !!
0
64
1
12,13,14 강의 소리만 나오고 검은 화면입니다
0
100
3
반복문 최소화하고 indexOf 사용해서 풀어봤습니다
0
63
1
영상 보기 전에 직접 풀어봤습니다.
0
74
1
섹션1의 17번문제 이 풀이로 풀어도 될까요?
0
135
2
정규표현식으로 처리해도 상관없나요 ?
0
120
2
3칸씩 건너뛸 수 있을 경우
0
125
2
강의에 대해 질문있습니다.
0
135
2
Object와 Set을 이용해 풀어봤습니다.
0
117
2
이렇게 해도 되나요?
0
102
2
선생님 중복 단어나 중복관련 문제들은 set을 이용하면 좋을것 같습니다.
0
145
2
이렇게 풀어도 괜찮을까요?
0
138
1
이렇게 풀어도 괜찮을까요?
0
112
1
모든 아나그램 찾기에서 시간복잡도
0
98
1
코드리뷰 부탁드립니다.
0
130
1
for loop 탈출은 return 문으로 해도 되지 않나요?
0
133
1
투포인트알고리즘으로 풀어봤습니다.
0
142
0
코드 리뷰 부탁드립니다.
0
120
1
코드 맞게 작성한 거 아닌가여??
0
146
1





