Problem
- In this kata you get the start number and the end number of a region and should return the count of all numbers except numbers with a 5 in it.
- The start and the end number are both inclusive.
Solution 01
function dontGiveMeFive(start, end) {
let count = 0;
for (let i = start; i <= end; i++) {
if (i.toString().indexOf(5) === -1) {
count++;
}
}
return count;
}
dontGiveMeFive(1, 6); // 5 (1, 2, 3, 4, 6)
dontGiveMeFive(4, 8); // 4 (4, 6, 7, 8)
toString()
: 숫자를 문자열로 변환한다.
indexOf()
: 주어진 값이 처음으로 나타나는 위치를 반환한다. 일치하는 값이 없으면 -1을 반환한다.
Solution 02
function dontGiveMeFive(start, end) {
let result = [];
for (let i = start; i <= end; i++) {
if (i.toString().indexOf('5') < 0) {
result.push(i);
}
}
return result.length;
}
dontGiveMeFive(1, 6); // 5 (1, 2, 3, 4, 6)
dontGiveMeFive(4, 8); // 4 (4, 6, 7, 8)
push()
: 배열의 끝에 새 element를 추가하고, 새로운 길이를 반환한다.
Solution 03
function dontGiveMeFive(start, end) {
let result = [];
for (let i = start; i <= end; i++) {
if (i.toString().includes('5') === false) {
result.push(i);
}
}
return result.length;
}
dontGiveMeFive(1, 6); // 5 (1, 2, 3, 4, 6)
dontGiveMeFive(4, 8); // 4 (4, 6, 7, 8)
includes()
: 특정 값이 있는지 확인하고, true/false를 반환한다.
Solution 04
function dontGiveMeFive(start, end) {
let count = 0;
for (let i = start; i <= end; i++) {
if (!/5/.test(i)) {
count++;
}
}
return count;
}
dontGiveMeFive(1, 6); // 5 (1, 2, 3, 4, 6)
dontGiveMeFive(4, 8); // 4 (4, 6, 7, 8)
test()
: 대응되는 문자열이 있는지 검색하고, true/false를 반환한다.