λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Algorithm/μΈν”„λŸ°(inflearn)

[ μžλ°”μŠ€ν¬λ¦½νŠΈ(JavaScript) ] section04 - 1 - 자릿수의 ν•©

by YWTechIT 2021. 8. 22.
728x90

πŸ“ section04 - 1 - 자릿수의 ν•©(bruteForce)

이번 μ„Ήμ…˜μ€ 완전탐색 `bruteForce`λ₯Ό μ‚¬μš©ν•΄ 문제λ₯Ό ν’€μ–΄λ³΄λŠ” μ„Ήμ…˜μ΄λ‹€.

 

자릿수의 합을 κ΅¬ν•˜κ³  κ·Έ 합이 μ΅œλŒ€μΈ κ²ƒκΉŒμ§€λŠ” 잘 ꡬ할 수 μžˆμ—ˆλŠ”λ°, 자릿수의 합이 같을 λ•Œ μ›λž˜ 숫자λ₯Ό λΉ„κ΅ν•˜μ—¬ 더 큰 숫자λ₯Ό λ¦¬ν„΄ν•˜λŠ” 방법이 λͺ…ν™•ν•˜κ²Œ λ– μ˜€λ₯΄μ§€ μ•Šμ•˜λ‹€. μ–΄λ ΅κ²Œ 생각 ν•  ν•„μš” 없이 처음 자릿수의 합을 비ꡐ할 λ•Œ 자릿수의 ν•©λ§Œ μ €μž₯ν•˜λŠ” 것이 μ•„λ‹ˆλΌ λ³€μˆ˜λ₯Ό λ”°λ‘œ λ§Œλ“€μ–΄μ„œ μ›λž˜ μˆ«μžκΉŒμ§€ μ €μž₯ν•˜λŠ” 방법을 μ“°λ©΄ λœλ‹€. 이후에 자릿수의 합이 λ™μΌν•œ 값이 λ‚˜μ˜€λ©΄ μ›λž˜ μˆ«μžμ™€ λΉ„κ΅ν•΄μ„œ 더 큰 κ°’μœΌλ‘œ κ°±μ‹ ν•΄μ£Όλ©΄ λœλ‹€.

 

let n = 7;
let arr = [133, 532, 701, 1001, 145];

console.log(solution(n, arr));

// λ‚˜μ˜ μ½”λ“œ
function solution(n, arr) {
  let max = Number.MIN_SAFE_INTEGER;
  let answer;

  for (let x of arr) {
    let sum = 0;
    let temp = x;

    do {
      sum += temp % 10;
      temp = Math.floor(temp / 10);
    } while (temp !== 0);

    if (max < sum){
        max = sum;
        answer = x;
    }
    else if (max === sum) {
        if (answer < x) answer = x;
    }
  }

  return answer;
}

 

let n = 7;
let arr = [133, 532, 701, 1001, 145];

// κ°•μ‚¬λ‹˜ μ½”λ“œ
function solution(n, arr) {
  let answer;
  let max = 0;

  for (let x of arr) {
    let temp = x;
    let sum = 0;

    while (temp) {
      sum += temp % 10;
      temp = Math.floor(temp / 10);
    }

    if (sum > max) {
      max = sum;
      ans = x;
    } else if (sum === max) {
      if (x > ans) ans = x;
    }
  }

  return answer;
}
λ°˜μ‘ν˜•

λŒ“κΈ€