Split Strings

이조은·2020년 12월 17일
0

Code Kata

목록 보기
9/15
post-thumbnail

문제

매개변수 str를 2문자씩 짝지어라. 이때 str가 홀수 길이라면 짝지을 때 2번째 문자는 빈칸이므로 _로 대체해라

For example:
  solution('abc') // should return ['ab', 'c_']
  solution('abcdef') // should return ['ab', 'cd', 'ef']

문제 풀이

🙆🏻‍♀️ 첫 번째 풀이

쉬운 편이었던 것 같은데 이 풀이가 나오기 전에 크리티컬한 실수를 했다.

for문에서 i를 2씩 증가시키고 싶어서 i+2를 한 것..! 이렇게 하면 i에 2를 더하기만 하지 할당은 하지 않아서 결과적으로 내가 원하는 숫자를 얻을 수 없고 i는 계속 0으로 나올 것이다.

for 문에서 관례처럼 사용하는
i=i+1 => i+=1 => i++
이 과정을 통해 만들어지는 것을 명심하자 ^_^

function solution(str) {
  let result = [];
  for (let i = 0; i < str.length; i += 2) {
    if (i === str.length - 1) {
      result.push(str.slice(i) + "_");
    } else {
      result.push(str.slice(i, i + 2));
    }
  }
  return result;
}

모범 답안

👍 첫 번째 모범 답안

function solution(str){
  var i = 0;
  var result = new Array();
  if (str.length % 2 !== 0) {
    str = str + '_';
  }
  while (i < str.length) {
      result.push(str[i] + str[i+1]);
      i += 2;
    }
  return result;
}

✔️ new Array()를 써서 빈 배열을 만들어 result에 할당했다.
✔️ str가 홀수라면 str+"_"로 해버려서 그 후의 연산을 쉽게 했다.
✔️ 내가 했듯이 slice 메소드를 굳이 쓸 필요가 없다. 그저 현재 인덱스, 다음 인덱스의 요소를 푸쉬!

✌️ 두 번째 모범 답안

function solution(s){
   return (s+"_").match(/.{2}/g)||[]
}
profile
싱글벙글

0개의 댓글