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
: 전역 검색
$&
: 일치하는 전체 문자열을 의미