CodeWars 코딩 문제 2021/04/06 - T.T.T.17: Split odd and even

이호현·2021년 4월 6일
0

Algorithm

목록 보기
97/138

[문제]

Task
Complete function splitOddAndEven, accept a number n(n>0), return an array that contains the continuous parts of odd or even digits.

Please don't worry about digit 0, it won't appear ;-)

Examples

splitOddAndEven(123) === [1,2,3]

splitOddAndEven(223) === [22,3]

splitOddAndEven(111) === [111]

splitOddAndEven(13579) === [13579]

splitOddAndEven(135246) === [135,246]

splitOddAndEven(123456) === [1,2,3,4,5,6]

(요약)주어진 숫자를 짝수끼리, 홀수끼리만 연결되게 분리해라.

[풀이]

function splitOddAndEven(n) {
  n = String(n);
  let index = 0;
  const answer = [n[index]];
  let oddEvenCheck = !(n[index] % 2);

  for(let i = 1; i < n.length; i++) {
    if(oddEvenCheck ^ (n[i] % 2)) {
      answer[index] += n[i];
    }
    else {
      answer.push(n[i]);
      index++;
      oddEvenCheck = !oddEvenCheck;
    }
  }

  return answer.map(str => str * 1);
}

문자열로 만들어서 index접근을 하기위해 주어진 숫자를 문자열로 먼저 변환.

첫 숫자를 배열에 넣고, 그 값이 짝수면 oddEvenChecktrue, 홀수면 false.

반복문을 돌면서 이전 숫자와 지금 숫자가 둘 다 짝수나 홀수면 if, 홀수와 짝수가 붙어 있으면 else.

마지막에 문자열을 숫자로 변경하고 return.

profile
평생 개발자로 살고싶습니다

0개의 댓글