첫 글자 대문자로 만들기(Sentence Capitalization)

강명모(codingBear)·2022년 2월 22일
0

algorithm_JavaScript

목록 보기
12/36
post-thumbnail

References

아래 링크의 강의 중 Section 10. Sentence Capitalization의 내용을 추려 이번 글을 작성하였습니다.
The Coding Interview Bootcamp: Algorithms + Data Structures on Udemy


Solution 1. my solution

function capitalize(str) {
  const splited = str.split(" ");
  let res = [];

  for (let char of splited) {
    const splitedSubArr = char.split("");
    let capitalized = splitedSubArr.shift().toUpperCase();
    capitalized = splitedSubArr.unshift(capitalized);

    res.push(splitedSubArr.join(""));
  }
  return res.join(" ");
}

console.log(capitalize("a short sentence"));
  1. input값 strsplit(" ")을 사용하여 공백기준으로 나눈다.
  2. 결과값을 담을 빈 배열 res 선언.
  3. for...of문 돌면서 탐색 문자 charsplit해서 subArray를 생성.
  4. subArray의 첫글자를 shift()로 떼어낸 다음 대문자로 만들고, 다시 subArray의 맨 처음 위치에 넣은 다음 join()으로 합침.
  5. subArray들을 공백 기준으로 합쳐서 반환.

Solution 2. simpler ver. with for...of

function capitalize(str) {
  let words = [];

  for (let word of str.split(" ")) {
    words.push(word[0].toUpperCase() + word.slice(1));
  }

  return words.join(" ");
}

console.log(capitalize("look, it is working!"));
  1. 결과값을 담을 빈 배열 words 선언.
  2. input값 strsplit(" ")을 통해 공백 기준으로 나누어 탐색.
  3. 탐색값 word의 첫 번째 값을 대문자로 바꾼 값과 나머지 값을 합쳐서 배열 words에 push.
  4. 결과값 words를 공백 기준으로 합쳐 반환.

Solution 3. with for loop

function capitalize(str) {
  // 아래처럼 설정하지 않고 for문 돌면서 왼쪽이 공백일 시 result에 add하는 식으로 짜면 str의 첫째값은 탐색 대상에서 제외되기 때문에 대문자로 반환 안 됨. 따라서 미리 input의 첫째값을 대문자로 설정.
  let result = str[0].toUpperCase();

  for (let i = 1; i < str.length; ++i) {
    if (str[i - 1] === " ") {
      result += str[i].toUpperCase();
    } else {
      result += str[i];
    }
  }

  return result;
}

console.log(capitalize("look, it is working!"));
  1. 변수 result에 입력값의 첫 글자를 대문자로 미리 설정.
  2. 입력값의 두 번째 문자부터 입력값의 길이까지 탐색하는 for문 작성.
  3. 탐색값 str의 왼쪽 문자가 공백이라면 대문자로 바꾸어 변수 result에 더하고, 아니라면 그 값을 그대로 더하기.
  4. 결과값 result 반환.

profile
front-end 분야를 중점으로 공부 중!🐣

0개의 댓글