티스토리 뷰

오늘도 간단간단하게 풀이하고 넘어갈 예정이다

 

function solution(array, n) {
    return array.filter(item => item === n).length;
}

1. 순회해서 각 문자가 alp와 같은지 확인한다.
2. 같으면 대문자 변환하고, 아니라면 놔둔다.
3. 최종 결과 문자열을 반환한다.

 

for문 구현

function solution(my_string, alp) {
    let result = '';

    for (let char of my_string) {
        if (char === alp) {
            result += char.toUpperCase();
        } else {
            result += char;
        }
    }

    return result;
}

 

replace 구현

function solution(my_string, alp) {
    return my_string.split(alp).join(alp.toUpperCase());
}

 

정규 표현식을 사용한 구현

function solution(my_string, alp) {
    const regex = new RegExp(alp, 'g');
    return my_string.replace(regex, alp.toUpperCase());
}

function solution(num_str) {
    return num_str.split('').reduce((sum, char) => sum + parseInt(char, 10), 0);
}

 

 

parseInt(char, 10)은 'char'을 10진수로 만들어주는 역할을 한다.

이를 통해 문자를 숫자로 변환할 수 있다.

 

다른 사람의 코드

function solution(num_str) {
    return [...num_str].reduce((a, c) => a + +c, 0)
}

나의 회심의 코드였는데 아직 갈 길이 멀구만...

 

function solution(n) {
    return Array.from({ length: n }, (_, i) => i + 1).filter(num => num % 2 !== 0);
}
 

Array.from() - JavaScript | MDN

The Array.from() static method creates a new, shallow-copied Array instance from an iterable or array-like object.

developer.mozilla.org

Array.from({ length: n }, (_, i) => i + 1)

1부터 n까지의 숫자를 배열로 생성한다.

filter(num => num % 2 !== 0)

배열의 각 요소를 순회하며 홀수인 경우만 필터링한다.

function solution(message) {
    return message.length * 2;
}

function solution(numbers, num1, num2) {
    return numbers.slice(num1, num2 + 1);
}

약수의 쌍을 찾는 문제이다.

1. 1부터 n까지 순회하면서 나머지가 0인 i와 n/i가 순서쌍을 이룬다.
2. 카운트하여 반환한다.
function solution(n) {
    let count = 0;

    for (let i = 1; i <= Math.sqrt(n); i++) {
        if (n % i === 0) {
            count++; 
            if (i !== n / i) {
                count++;
            }
        }
    }

    return count;
}

function solution(my_string) {
    let result = '';

    for (let char of my_string) {
        if (char === char.toUpperCase()) {
            result += char.toLowerCase();
        } else {
            result += char.toUpperCase();
        }
    }

    return result;
}
for...of 루프는 iterable 객체(배열, 문자열, Map, Set 등)의 각 요소를 순회하는데 사용한다.

function solution(flo) {
    return Math.floor(flo);
}

function solution(arr) {
    const X = [];

    for (let i = 0; i < arr.length; i++) {
        for (let j = 0; j < arr[i]; j++) {
            X.push(arr[i]);
        }
    }

    return X;
}

 

map을 사용해 조금 더 함수형 스타일로 작성할 수 있다.

function solution(arr) {
    return arr.flatMap(a => Array(a).fill(a));
}

1. 리스트 names를 5명씩 묶어 그룹을 나눈다.
2. 각 그룹의 첫 번째 사람의 이름을 추출한다.
function solution(names) {
    let result = [];

    for (let i = 0; i < names.length; i += 5) {
        result.push(names[i]);
    }

    return result;
}

 

filter를 사용하면 다음과 같다.

function solution(names) {
    return names.filter((_, index) => index % 5 === 0);
}

function solution(arr1, arr2) {
    if (arr1.length > arr2.length) {
        return 1;
    } else if (arr1.length < arr2.length) {
        return -1;
    } else {
        const sum1 = arr1.reduce((acc, val) => acc + val, 0);
        const sum2 = arr2.reduce((acc, val) => acc + val, 0);

        if (sum1 > sum2) {
            return 1;
        } else if (sum1 < sum2) {
            return -1;
        } else {
            return 0;
        }
    }
}
댓글