highAndLow.js (7kyu 04)

Codewars 알고리즘 풀이


Problem

  • You are given a string of space separated numbers, and have to return the highest and lowest number.
    • 공백으로 구분된 숫자 문자열에서, 가장 높은 수와 가장 낮은 수를 반환한다.


Solution 01

function highAndLow(numbers) {
  let arr = numbers.split(' ');
  let max = arr[0];
  let min = arr[0];
  
  for (let i = 1; i < arr.length; i++) {
    let n = Number(arr[i]);
    
    if (n > max) max = n;
    if (n < min) min = n;
  }
  return max + ' ' + min;
}

highAndLow('1 2 3 4');   // 4 1
highAndLow('-1 0 1 2');  // 2 -1
  • split(): 문자열을 부분 문자열로 분할하고, 새 배열로 반환한다.
  • Number(): 객체 인수를 숫자로 변환한다. 숫자로 변환할 수 없으면 NaN을 반환한다.


Solution 02

function highAndLow(numbers) {
  let arr = numbers.split(' ');
  let max = Math.max(...arr);
  let min = Math.min(...arr);
  
  return max + ' ' + min;
}

highAndLow('1 2 3 4');   // 4 1
highAndLow('-1 0 1 2');  // 2 -1
  • Math.max(): 값이 가장 큰 수를 반환한다.
  • Math.min(): 값이 가장 작은 수를 반환한다.


Solution 03

function highAndLow(numbers) {
  let arr = numbers.split(' ');
  let max = Math.max(...arr);
  let min = Math.min(...arr);
  
  return `${max} ${min}`;
}

highAndLow('1 2 3 4');   // 4 1
highAndLow('-1 0 1 2');  // 2 -1


Solution 04

function highAndLow(numbers) {
  let arr = numbers.split(' ').sort((a, b) => a - b);
  let max = arr[arr.length - 1];
  let min = arr[0];
  
  return `${max} ${min}`;
}

highAndLow('1 2 3 4');   // 4 1
highAndLow('-1 0 1 2');  // 2 -1
  • sort(): 배열의 element를 정렬한 후, 그 배열을 반환한다.