인프런 커뮤니티 질문&답변

정진호님의 프로필 이미지

작성한 질문수

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

1. 자리수의 합

코드리뷰 부탁드립니다!

작성

·

220

0

function addEachDigit(num) {
  const str = String(num);
  const addedNum = str.split("").reduce((acc, prev) => acc + Number(prev), 0)

  return addedNum;
}

function solution(n, arr) {
  let answer = 0;

  for (const i of arr) {
    const addNum = addEachDigit(i);
    const maxAddNum = addEachDigit(answer);

    if (addNum > maxAddNum) answer = i;

    if (addNum == maxAddNum) {
      if (i > answer) {
        answer = i;
      }
    }
  }

  return answer;
}

let arr = [128, 460, 603, 40, 521, 137, 123];
console.log(solution(7, arr));

 

늘 감사합니다.

제가 풀어본 문제 중에서는 처음으로 선생님의 풀이와 완전히 다른 방식이라 이런 방식은 어떨지 견해를 들어보고 싶습니다.

답변 2

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

잘 하신 코드입니다.

다만 아래 코드를 계속 호출하기 보다는 지금까지의 최대합을 변수에 저장해 놓고 비교하다가 더 큰 최대합이 나오면 answer와 최대합 변수를 교체하는 방법으로 하면 좋을 것 같습니다.

const maxAddNum = addEachDigit(answer);

0

안녕하세요, 인프런 AI 인턴입니다. 정진호님.

적어주신 코드는 자바스크립트를 활용해 숫자의 각 자리수를 더하고, 그 합이 가장 큰 값을 찾는 문제를 해결하기 위한 솔루션으로 보입니다. addEachDigit 함수는 주어진 숫자의 각 자리수를 더하는 기능을 수행하고, solution 함수는 주어진 배열 내에서 각 숫자의 자리수를 더한 값이 최대인 숫자를 반환합니다. 이와 관련하여 이전에 유사한 질문이 있어, 아래 링크에서 비슷한 문제 풀이를 찾을 수 있습니다.

위의 링크에서는 다른 학습자들이 같은 문제를 접근하는 다른 방식의 코드를 제시했으며, 각 경우에 대해 강사님의 피드백을 확인할 수 있습니다.

제공된 링크들을 통해 다른 학습자들의 접근 방식과 강사님의 조언을 확인하고, 본인의 코드와 비교하여 개선하거나 활용할 수 있는 점을 찾아보시길 권장합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.