문제

  • 단어의 길이가 홀수인 경우, 중간 문자를 반환한다.
  • 단어의 길이가 짝수인 경우, 중간 문자 2개를 반환한다.

풀이 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(): 문자열/배열의 일부를 추출하고, 새 문자열/배열로 반환한다.

풀이 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

풀이 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(): 가장 가까운 정수로 반올림하고, 결과를 반환한다.

풀이 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(): 가장 가까운 정수로 반올림한다.

풀이 05

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

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