알고리즘

Daily Coding 06. letterCapitalize

디디 ( DD ) 2023. 1. 25. 09:11

Q. 문자열(공백이 있는 알파벳 문자열)을 입력받아 문자열을 구성하는 각 단어의 첫 글자가 대문자인 문자열을 리턴해야 합니다.

 

ex.'hello world' → 'Hello World'

 

 

//첫 번째 풀이

function letterCapitalize(str) {
  let arr = str.split(' ');
  let result = '';
  for (let i = 0; i < arr.length; i++) {
    result = result + arr[i][0].toUpperCase() + arr[i].slice(1, arr[i].length) + ' ';
  }
  return result.slice(0, -1);
}

 처음에는 이렇게 풀었다. 그런데 이 방법으로는 공백만 입력되었을 때나 공백이 여러 번 입력 되었을 때를 걸러낼 수 없었다.

 

 

//레퍼런스 코드를 참고한 두 번째 풀이

function letterCapitalize(str) {
  let arr = str.split(' ');
  for (let i = 0; i < arr.length; i++) {
    if (arr[i].length > 0) {  //공백인 경우를 거르는 조건 추가
      arr[i] = arr[i][0].toUpperCase() + arr[i].substring(1);
    }
  }
  return arr.join(' ');
}

 레퍼런스 코드에는 substr()가 쓰였는데, mdn 문서에서 해당 메서드의 사용을 권장하지 않아 이와 비슷한 substring()이라는 메서드를 사용해서 풀어 보았다. 두 메서드의 차이점은 substr()은 시작 인덱스와 추출할 문자의 수를, substring()은 시작 인덱스와 마지막 인덱스를 입력값으로 받는다는 점이다.