isSortedAndHow.js (7kyu 44)

Codewars 알고리즘 풀이


Problem

  • If the numbers in the array are sorted in an ascending order: ‘Ascending’
    • 배열의 숫자가 오름차순으로 정렬되어 있다면, ‘Ascending’을 반환한다.
  • If the numbers in the array are sorted in an descending order: ‘Descending’
    • 배열의 숫자가 내림차순으로 정렬되어 있다면, ‘Descending’을 반환한다.
  • Otherwise: ‘No’
    • 그 외의 경우라면, ‘No’를 반환한다.


Solution 01

function isSortedAndHow(arr) {
  const str = arr.join('');
  const asc = arr.sort((a, b) => a - b).join('');
  const dsc = arr.sort((a, b) => b - a).join('');
  
  if (str === asc) {
    return 'Ascending';
  } else if (str === dsc) {
    return 'Descending';
  } else {
    return 'No';
  }
}

isSortedAndHow([1, 2, 3, 4]);  // Ascending
isSortedAndHow([1, 3, 2, 4]);  // No
isSortedAndHow([4, 3, 2, 1]);  // Descending

join(): 배열의 모든 element를 결합하고, 새 문자열로 반환한다.

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


Solution 02

function isSortedAndHow(arr) {
  const str = arr.join('');
  const asc = arr.sort((a, b) => a - b).join('');
  const dsc = arr.sort((a, b) => b - a).join('');
  
  return str === asc ? 'Ascending' : str === dsc ? 'Descending' : 'No';
}

isSortedAndHow([1, 2, 3, 4]);  // Ascending
isSortedAndHow([1, 3, 2, 4]);  // No
isSortedAndHow([4, 3, 2, 1]);  // Descending