[코플릿 8번] convertDoubleSpaceToSingle

아데스티·2023년 2월 12일
0

알고리즘 테스트

목록 보기
4/10

문제

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

입력

인자 1 : str

  • string 타입의 문자열

출력

  • string 타입의 문자열

주의 사항

  • 두 칸을 초과하는 공백은 존재하지 않는다고 가정합니다.

입출력 예시

let output = convertDoubleSpaceToSingle('string  with  double  spaces');
console.log(output); // --> "string with double spaces"

풀이

내가 푼 방법

function convertDoubleSpaceToSingle(str) {
  // TODO: 여기에 코드를 작성합니다.
  return str.split('  ').join(' ');
}

코플릿 정답

function convertDoubleSpaceToSingle(str) {
  let result = '';
  let before = '';
  for (let i = 0; i < str.length; i++) {
    if (before !== ' ' || str[i] !== ' ') {
      result = result + str[i];
    }

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

    // 2. 이전 문자가 공백이 아니거나
    // 지금도 공백이 아닐 경우에만 추가
    // 3. 지금 문자가 공백인데 이전 문자가 아니였으면 추가
    // 4. 이전 문자가 공백인데 지금 문자가 아니면 추가
    // 5. 이전 지금 문자 모두 공백이면 false / 이전문자 공백으로 유지
    if (before !== ' ' || str[i] !== ' ') {
      result = result + str[i];
    }

    // 1. 이전 문자에 하나씩 넣음
    before = str[i];
  }
  return result;
}
  • 이전 문자를 받아서
  • 이전 문자와 지금 문자가 false일 경우에 받지 않도록
  • 이전 문자나 지금 문자중 하나만 여백이여도 true로 result 에 현재 인덱스의 문자열 추가
profile
종착지이자 거점 A Destination

0개의 댓글