largestNum.js (7kyu 97)

Codewars 알고리즘 풀이


Problem

  • In this Kata, you will be given a string that has lowercase letters and numbers.
    • 소문자와 숫자가 있는 문자열이 주어진다.
  • Your task is to compare the number groupings and return the largest number.
    • 숫자 그룹을 비교하고, 가장 큰 숫자를 반환한다.


Solution 01

function largestNum(str) {
  let arr = str.replace(/[^0-9]/g, ' ').split(' ');
  return Math.max(...arr);
}

largestNum('1how23are4you5');   // 23
largestNum('1how23are45you6');  // 45

replace(): 대응되는 문자열을 찾아 다른 문자열로 치환한다.

[^]: 문자 클래스 [] 내에서는 not을 의미

split(): 문자열을 부분 문자열로 분할하고, 새 배열로 반환한다.

Math.max(): 값이 가장 큰 수를 반환한다.


Solution 02

function largestNum(str) {
  let arr = str.match(/\d+/g);
  return Math.max(...arr);
}

largestNum('1how23are4you5');   // 23
largestNum('1how23are45you6');  // 45

\d: 숫자에 대응 (= [0-9])

+: 1회 이상 연속으로 반복되는 부분에 대응


Solution 03

function largestNum(str) {
  let arr = str.match(/\d+/g);
  return +arr.sort((a, b) => b - a)[0];
}

largestNum('1how23are4you5');   // 23
largestNum('1how23are45you6');  // 45

sort(): 배열의 element를 정렬한 후, 그 배열을 반환한다.