capitalize.js (7kyu 89)

Codewars 알고리즘 풀이


Problem

  • Given a string, capitalize the letters that occupy even indexes and odd indexes separately, and return as shown below.

  • 주어진 문자열의 짝수 인덱스와 홀수 인덱스를 구분해서 대문자로 변경한다.

    • 'abcdef' -> ['AbCdEf', 'aBcDeF']


For example:

code --> [‘CoDe’, ‘cOdE’]



Solution 01

function capitalize(str) {
  let even = '';
  let odd = '';
  
  for (let i = 0; i < str.length; i++) {
    if (i % 2 === 0) {
      even += str.toUpperCase()[i];
      odd += str[i];
    } else {
      even += str[i];
      odd += str.toUpperCase()[i];
    }
  }
  return [even, odd];
}

capitalize('abcdefgh');  // ['AbCdEfGh', 'aBcDeFgH']
capitalize('codewars');  // ['CoDeWaRs', 'cOdEwArS']

toUpperCase(): 문자열을 대문자로 변환한다.


Solution 02

function capitalize(str) {
  const even = str.split('').map((i, index) => index % 2 === 0 ? i.toUpperCase() : i).join('');
  const odd = str.split('').map((i, index) => index % 2 !== 0 ? i.toUpperCase(): i).join('');
  
  return [even, odd];
}

capitalize('abcdefgh');  // ['AbCdEfGh', 'aBcDeFgH']
capitalize('codewars');  // ['CoDeWaRs', 'cOdEwArS']

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

map(): 배열 내 모든 element에 대해, 호출한 함수의 결과를 모아 새 배열로 반환한다.

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