getMiddle.js (7kyu 02)

Codewars 알고리즘 풀이


Problem

  • If the word’s length is odd, return the middle character.
    • 단어의 길이가 홀수인 경우, 중간 문자를 반환한다.
  • If the word’s length is even, return the middle 2 characters.
    • 단어의 길이가 짝수인 경우, 중간 문자 2개를 반환한다.


Solution 01

function getMiddle(str) {
  let middle = Math.floor(str.length / 2);
  
  if (str.length % 2 === 0) {
    return str.slice(middle - 1, middle + 1);
  } else {
    return str.slice(middle, middle + 1);
  }
}

getMiddle('odd');   // d
getMiddle('even');  // ve
  • Math.floor(): 가장 가까운 정수로 반내림하고, 결과를 반환한다.
  • slice(): 문자열/배열의 일부를 추출하고, 새 문자열/배열로 반환한다.


Solution 02

function getMiddle(str) {
  let middle = Math.floor(str.length / 2);
  
  return str.length % 2 === 0
    ? str.slice(middle - 1, middle + 1)
    : str.slice(middle, middle + 1);
}

getMiddle('odd');   // d
getMiddle('even');  // ve


Solution 03

function getMiddle(str) {
  let middle = Math.ceil(str.length / 2);
  
  return str.length % 2 === 0
    ? str.slice(middle - 1, middle + 1)
    : str.slice(middle - 1, middle);
}

getMiddle('odd');   // d
getMiddle('even');  // ve
  • Math.ceil(): 가장 가까운 정수로 반올림하고, 결과를 반환한다.


Solution 04

function getMiddle(str) {
  let middle = Math.round(str.length / 2);
  
  return str.length % 2 === 0
    ? str.slice(middle - 1, middle + 1)
    : str.slice(middle - 1, middle)
}

getMiddle('odd');   // d
getMiddle('even');  // ve
  • Math.round(): 가장 가까운 정수로 반올림한다.


Solution 05

function getMiddle(str) {
  return str.slice((str.length - 1) / 2, str.length / 2 + 1);
}

getMiddle('odd');   // d
getMiddle('even');  // ve