[JS]_daily coding 6

seul·2022년 5월 31일
0

Algorithm

목록 보기
5/31

코플릿 데일리 코딩 6번


수도코드

  1. 공백을 기준으로 단어를 나눈다 문자열-> 배열 split(' ')
  2. 새로운 문자열을 담아줄 빈 배열 선언
  3. 단어들을 나눠서 담아놓은 배열을 반복문으로 순회하면서 각 단어를 변환
    3-1. (연속된 공백이 입력된 경우 ''이 배열에 들어옴)단어 길이가 0인 경우는 그대로 배열에 넣어줌 - if
    3-2. 0번째 인덱스를 대문자로 변환toUpperCase()
    3-3. 나머지 글자들을 소문자 그대로 가져옴 substring(1)
    3-4. 새로운 문자열로 조합 +
  4. 새로운 문자열이 담긴 배열을 문자열로 변환 join(' ')해서 return

코드

function letterCapitalize(str) {
  let arr = str.split(' ');
  let result = [];
  for (let i = 0; i < arr.length ; i++) {
    if (arr[i].length === 0) {
      result[i] = arr[i]
    } else {
      result[i] = arr[i][0].toUpperCase() + arr[i].substring(1);
    }
  }
  return result.join(' ')
}

테스트를 통과하고 나서 레퍼런스 코드를 보니 여기서는 새로운 결과 배열을 선언해주지 않았다. 배열은 변형이 가능하기 때문에 조건에 해당하는(배열 안의 단어의 길이가 0보다 큰) 요소만 변형하는 것이 가능 하다. 이렇게 작성하니까 코드가 훨씬 간결해진다.

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);
    }
  }
  str = arr.join(' ')
  return str
}

remind

string 메서드들을 복습했다. JavaScript의 문자열은 불변(Immutable)하므로 원본 문자열에는 영향을 주지 않는다.

  • str.toUpperCase()
    문자열을 대문자로 변환해 반환
  • str.substr(start[, length])
    문자열에서 특정 위치에서 시작하여 특정 문자 수 만큼의 문자들을 반환
  • str.substring(indexStart[, indexEnd])
    string 객체의 시작 인덱스로 부터 종료 인덱스 전 까지 문자열의 부분 문자열을 반환
  • str.slice(beginIndex[, endIndex])
    문자열의 일부를 추출하면서 새로운 문자열을 반환

JavaScript의 문자열은 변경 불가능한 값(immutable value)이다.이런 값을 “primitive values” 라 한다. (변경이 불가능하다는 뜻은 메모리 영역에서의 변경이 불가능하다는 뜻이다. 재할당은 가능하다)

더 공부할 것

  • slice()와 substring()의 차이 정리하기
  • 배열 메서드 immutable, mutable 정리하기
profile
Connecting dots

0개의 댓글