[TIL]210225

박성진·2021년 2월 25일

문제

문자열을 입력받아 해당 문자열에 등장하는 두 칸의 공백을 모두 한칸의 공백으로 바꾼 문자열을 리턴하는 문제이다.

내가작성한 코드

function SpaceToSingle(str) {
  // TODO: 여기에 코드를 작성합니다.
  // split('')을 이용하여 문자를 한단어씩 쪼개 주어 words라는 변수에 값을 할당해주었다.
  let words = str.split('')
  let arr = []
  for(let i = 0; i < words.length; i++) {
    // 반복문을 돌면서 words의 인덱스가 ' ' 이고 해당 인덱스에 1을 더한 인덱스도 ' ' 이라면 아무것도 동작하지 않게 해주었다.
    if(words[i+1] === ' ' && words[i] === ' ') {
      // 그렇지 않다면 arr라는 빈배열에 push메소드를 이용하여 한단어씩 push해 주었다.
    } else {
      arr.push(words[i])
    }
}
  // arr는 배열 이니 join 메소드를 이용하여 문자열로 바꾸어 리턴해주었다. 
return arr.join('')
}

레퍼런스

function SpaceToSingle(str) {
  let result = '';
  let beforeWord = '';
  for (let i = 0; i < str.length; i++) {
    // 직전의 문자가 공백이고, 현재의 문자도 공백인 경우
    // 즉, 현재의 문자가 두 번째 공백인 경우(에만), 무시한다.
    if (beforeWord !== ' ' || str[i] !== ' ') {
      result = result + str[i];
    }
    beforeWord = str[i];
  }
  return result;
}

레퍼런스 코드랑 내가 짠 코드랑 비교하면서 굳이 split으로 나누고 push하고 join메소드를 사용하여 복잡하게 할필요없이 변수에 전의 인덱스를 할당하고 비교하니 훨씬 코드가 간편해진걸 보니 더 간편하게 코드를 짜야겠다는 생각이 들었다.

0개의 댓글