insertDash.js (7kyu 93)

Codewars 알고리즘 풀이


Problem

  • Write a function that will insert dashes (‘-’) between each two odd numbers in num.
    • num의 두 홀수 사이에 dash(‘-‘)를 삽입하는 함수를 작성한다.


Solution 01

function insertDash(num) {
  let str = num.toString();
  let result = '';
  
  for (let i = 0; i < str.length; i++) {
    if (i > 0 && str[i - 1] % 2 !== 0 && str[i] % 2 !== 0) {
      result += '-';
    }
    result += str[i];
  }
  return result;
}

insertDash(1234);  // 1234
insertDash(1235);  // 123-5
insertDash(1345);  // 1-345

toString(): 숫자를 문자열로 변환한다.


Solution 02

function insertDash(num) {
  let arr = num.toString().split('').join('-').split('');
  
  for (let i = 1; i < arr.length - 1; i += 2) {
    if (arr[i - 1] % 2 === 0 || arr[i + 1] % 2 === 0) {
      arr[i] = '';
    }
  }
  arr = arr.join('');
  return arr;
}

insertDash(1234);  // 1234
insertDash(1235);  // 123-5
insertDash(1345);  // 1-345

split(): 문자열을 부분 문자열로 분할하고, 새 배열로 반환한다.

join(): 배열의 모든 element를 결합하고, 새 문자열로 반환한다.


Solution 03

function insertDash(num) {
  return num.toString().replace(/[13579](?=[13579])/g, '$&-');
}

insertDash(1234);  // 1234
insertDash(1235);  // 123-5
insertDash(1345);  // 1-345

replace(): 대응되는 문자열을 찾아 다른 문자열로 치환한다.

x(?=y): y가 뒤따라오는 x에 대응

g: 전역 검색

$&: 일치하는 전체 문자열을 의미