여러 개의 배열이 주어졌을 때, 모든 배열에 공통으로 존재하는 요소만 추출해야 하는 경우가 자주 있습니다. 이번 글에서는 임의의 개수의 배열을 인자로 받아, 모든 배열에 공통된 요소들로 이루어진 새로운 배열을 반환하는 JavaScript 함수를 작성해 보겠습니다. 만약 공통 요소가 하나도 없다면 빈 배열을 반환하면 됩니다.문제 접근 방식핵심 아이디어는 다음과 같습니다.1. 두 배열의 교집합을 구하는 함수를 먼저 만듭니다.2. 나머지 매개변수(rest parameter)를 활용해 여러 배열을 순차적으로 교집합 처리합니다.구현 예제 {
이번 글에서는 숫자의 각 자릿수를 재귀적으로 더하여, 결과가 한 자리 수가 될 때까지 이 과정을 반복하는 JavaScript 함수를 작성하는 방법을 알아보겠습니다.여기서 중요한 조건은 숫자를 문자열(String)이나 다른 데이터 타입으로 변환하지 않고 처리해야 한다는 점입니다. 즉, 오직 산술 연산만을 사용해 문제를 해결해야 합니다.그럼 바로 함수의 코드를 살펴보겠습니다.예제아래는 해당 기능을 구현한 코드입니다.const num = 546767643;const sumDigit = (num, sum = 0) => {
이번 글에서는 숫자 배열을 인자로 받아, 배열 안의 모든 세 자리 정수(100~999)를 배열의 맨 앞으로 이동시키는 JavaScript 함수를 작성해 보겠습니다.예를 들어 다음과 같은 배열이 주어졌을 때,const numList = [1, 324, 34, 3434, 304, 2929, 23, 444];세 자리 숫자인 324, 304, 444가 배열의 앞쪽으로 이동하도록 만드는 것이 목표입니다.예제 코드먼저 숫자가 세 자리인지 판별하는 헬퍼 함수와, 해당 조건을 만족하는 요소를 앞으로 가져오는 함수를 작성합니다.const numLi
이번 글에서는 숫자를 인수로 받아, 원래 숫자의 모든 자릿수를 각각 제곱한 뒤 이어 붙여 새로운 숫자를 반환하는 JavaScript 함수를 작성해 보겠습니다. 문제 이해하기 예를 들어 숫자가 99라면 출력 결과는 다음과 같아야 합니다. 8181 그 이유는 9의 제곱이 81이기 때문입니다. 두 개의 자릿수 9가 각각 제곱되어(81, 81) 문자열처럼 연결되면 8181이 됩니다. 마찬가지로 숫자가 9119라면, 9→81, 1→1, 1→1, 9→81 순서로 계산되어 최종 결과는 811181이 됩니다. 구현 코드 이 함수는 다음과 같이
숫자로 이루어진 배열을 인자로 받아 정렬된 결과를 반환하는 자바스크립트 함수를 작성한다고 가정해 봅시다. 보통은 Array.prototype.sort() 메서드를 사용하면 간단히 해결되지만, 이번 문제에서는 sort()를 사용하지 않고 반드시 Array.prototype.reduce() 메서드만으로 배열을 정렬해야 합니다. 접근 방식: 삽입 정렬 + reduce() 핵심 아이디어는 고전적인 삽입 정렬(Insertion Sort) 알고리즘입니다. reduce()로 빈 배열([])에서 시작하는 누적 배열(acc)을 만들고, 원본 배열의
문제 상황다음과 같은 객체 배열이 있다고 가정해 보겠습니다.const arr = [ {name: Rahul, score: 89}, {name: Vivek, score: 88}, {name: Rakesh, score: 75}, {name: Sourav, score: 82}, {name: Gautam, score: 91}, {name: Sunil, score: 79}, ];이처럼 여러 개의 객체가 담긴 배열이 있을 때, 각 요소의 name 값을 키(key)로, score 값을 그 키에 대응하는
JavaScript에서 두 개의 배열, 즉 키(keys) 배열과 값(values) 배열이 주어졌을 때, 이를 하나의 Map 객체로 결합하여 각 키에 해당하는 값을 매핑해야 하는 경우가 자주 있습니다.문제 상황예를 들어 다음과 같은 두 개의 배열이 있다고 가정해 보겠습니다.const keys = [0, 4, 2, 3, 1]; const values = [first, second, third, fourth, fifth];여기서 우리는 키 배열과 값 배열을 인자로 받아, 각 값을 대응되는 키에 매핑하는 JavaScript 함수를 작성해야
JavaScript 프로그래밍에서 배열에 담긴 여러 숫자 중에서 기준값 이상인 요소만 골라내야 하는 경우가 자주 있습니다. 예를 들어, 시험 점수 목록에서 합격선 이상의 점수만 추출하거나, 상품 가격 목록에서 일정 금액 이상인 상품만 필터링하는 상황이 그렇습니다.이번 글에서는 숫자 배열을 첫 번째 인수로, 기준이 되는 숫자 하나를 두 번째 인수로 받아, 배열 내에서 두 번째 인수보다 크거나 같은 모든 요소를 새로운 배열로 반환하는 함수를 작성해 보겠습니다.반복문을 활용한 구현 방법가장 기본적인 접근 방식은 for 반복문을 사용하는
영어 알파벳으로 이루어진 문자열을 입력받아, 그 안에 포함된 모음(vowel)과 자음(consonant)의 개수를 객체 형태로 반환하는 JavaScript 함수를 작성해 보겠습니다.이 문제는 split()으로 문자열을 개별 문자 배열로 나눈 뒤, reduce()를 활용해 각 문자를 순회하면서 카운트를 누적하는 방식으로 간결하게 해결할 수 있습니다.예제 코드전체 코드는 다음과 같습니다. { const legend = aeiou; let { vowels, consonants } = acc; i
JavaScript로 개발하다 보면 객체 배열을 특정 기준에 따라 정렬해야 하는 경우가 자주 발생합니다. 이번 글에서는 falsy 값을 가진 객체를 배열의 맨 아래로 밀어내고, 나머지 객체들은 값의 내림차순으로 정렬하는 방법을 알아보겠습니다.문제 상황다음과 같은 객체 배열이 있다고 가정해 보겠습니다.const arr = [ {key: a, value: false}, {key: a, value: 100},
이번 글에서는 문자열을 인자로 받아 해당 문자열이 알파벳 순서(오름차순 또는 내림차순)로 정렬되어 있는지 판별하는 JavaScript 함수를 작성해 보겠습니다.요구 사항작성할 함수는 다음과 같이 동작해야 합니다.isSorted(adefgjmxz) // true → 오름차순으로 정렬됨isSorted(zxmfdba) // true → 내림차순으로 정렬됨isSorted(dsfdsfva) // false → 오름차순과 내림차순이 뒤섞임구현 코드핵심 아이디어는 인접한 두 문자의 charCodeAt() 값 차이를 비교하는 것입니다.
문자열을 인수로 받아, 그 안에 포함된 모든 슬래시(/)를 역슬래시(\)로 변환한 새로운 문자열을 반환하는 JavaScript 함수를 작성해야 합니다.원본 문자열의 나머지 문자들은 그대로 유지하고, 슬래시의 방향만 반전시키면 됩니다.그럼 이 함수의 코드를 직접 작성해 보겠습니다.예제구현 코드는 다음과 같습니다.const str = Th/s str/ng /conta/ns some/ forward slas/hes; const invertSlashes = str => { let re
이번 글에서는 숫자 배열을 입력받아 그중 소수(prime number)에 해당하는 값들만 골라 합계를 반환하는 자바스크립트 함수를 작성해 보겠습니다.소수란 1과 자기 자신 외에는 약수를 가지지 않는 1보다 큰 자연수를 말합니다. 예를 들어 2, 3, 5, 7, 11처럼 오직 1과 자신으로만 나누어 떨어지는 수가 여기에 해당합니다.문제 접근 방식이 문제는 크게 두 단계로 나누어 해결할 수 있습니다.소수 판별 함수 작성: 주어진 숫자가 소수인지 아닌지를 판별합니다.합계 계산: 배열을 순회하면서 소수인 요소만 더합니다.1단계: 소수 판별
다음과 같이 중복된 요소를 포함하고 있는 배열이 있다고 가정해 보겠습니다.const arr = [1,1,2,2,3,4,4,5];우리가 작성해야 할 JavaScript 함수는 이러한 배열을 입력받아 새로운 배열을 반환하는 것입니다. 여기서 주의할 점은 단순히 중복을 제거하는 것이 아니라, 원본 배열에서 딱 한 번만 등장하는 요소들만 골라 담아야 한다는 것입니다. 즉, 1, 2, 4처럼 두 번 이상 나타나는 값은 모두 제외되어야 합니다.해결 아이디어핵심은 indexOf()와 lastIndexOf() 메서드를 함께 활용하는 것입니다. 어
JavaScript로 개발을 하다 보면 특정 형식으로 작성된 문자열을 구조화된 데이터(배열 또는 객체)로 변환해야 하는 경우가 자주 발생합니다. 이번 글에서는 String.prototype.split() 메서드를 활용해 복잡한 형식의 문자열을 객체 배열로 변환하는 방법을 알아보겠습니다.문제 상황다음과 같은 특수한 형식의 문자열이 있다고 가정해 보겠습니다.const str = Integer,1 Float,2.0\nBoolean,True Integer,6\nFloat,3.66 Boolean,False;이 문자열을 아래와 같은 객체 배열
JavaScript를 다루다 보면 객체 배열에서 동일한 키를 가진 값들을 모두 더해 하나의 객체로 정리해야 하는 경우가 종종 있습니다. 이번 글에서는 그러한 상황을 해결하는 방법을 단계별로 살펴보겠습니다.문제 상황다음과 같은 객체 배열이 있다고 가정해 보겠습니다.const arr = [{a: 2, b: 5, c: 6}, {a: 3, b: 4, d: 1}, {a: 1, d: 2}];각 객체 내부에서 키는 고유하지만(유효한 객체가 되기 위한 조건), 서로 다른 객체들끼리는 같은 키를 가질 수 있습니다.우리가 작성해야 할 함수는 이런 배
문제 이해하기이번 글에서는 중복된 숫자가 포함될 수 있는 숫자 배열을 입력받아, 배열에 단 한 번만 등장하는 고유한 요소들의 합을 반환하는 JavaScript 함수를 작성해 보겠습니다. 두 번 이상 나타나는 값은 합산에서 제외됩니다.예시입력 배열이 다음과 같다고 가정해 보겠습니다.const arr = [2, 5, 5, 3, 2, 7, 4, 9, 9, 11];이 배열에서 한 번만 등장하는 요소는 3, 7, 4, 11입니다. 따라서 기대하는 출력값은 다음과 같습니다.3 + 7 + 4 + 11 = 25해결 접근 방식가장 직관적인 방법은
JavaScript로 문자열을 다루다 보면 각 문자가 몇 번 등장하는지 세어야 하는 경우가 자주 있습니다. 이번 글에서는 숫자로만 이루어진 문자열을 받아, 각 숫자가 등장한 횟수를 담은 객체를 반환하는 함수를 만들어 보겠습니다.문제 정의다음과 같이 숫자들로 구성된 문자열이 있다고 가정해 봅시다.const str = 11222233344444445666;이 문자열을 입력으로 받아, 각 숫자의 등장 횟수를 나타내는 객체를 반환하는 JavaScript 함수를 작성해야 합니다. 즉, 위 문자열에 대한 기대 출력은 다음과 같습니다.const
JavaScript에서 숫자 n과 두 개의 숫자로 구성된 범위 배열을 인자로 받아, 해당 범위 안에 속하는 난수 n개를 배열 형태로 반환하는 함수를 작성해야 하는 경우가 있습니다. 예를 들어, 5부터 15 사이의 서로 다른 난수 10개를 만드는 것이 대표적인 예입니다. 구현 아이디어 핵심은 Math.random() 함수입니다. 이 함수는 0 이상 1 미만의 임의의 실수를 반환하므로, 다음 공식을 활용하면 원하는 범위의 난수를 손쉽게 얻을 수 있습니다. Math.random() * (max - min) + min 여기에 toFixed
문제 상황다음과 같은 두 개의 숫자 배열이 있다고 가정해 보겠습니다.const arr1 = [1,2,3,4,5,6]; const arr2 = [9,8,7,5,8,3];이 두 배열을 인자로 받아, 서로 대응되는 요소들 간의 절대값 차이(absolute difference)를 담은 새로운 배열을 반환하는 JavaScript 함수를 작성해야 합니다.즉, 위 배열의 경우 각 위치별로 |1−9|, |2−8|, |3−7|, |4−5|, |5−8|, |6−3|을 계산해야 하므로, 기대하는 출력 결과는 다음과 같습니다.const output =