덧셈 수열(Additive Number)이란? 덧셈 수열이란 숫자로만 구성된 문자열의 자릿수들을 적절히 분할했을 때, 각 숫자가 덧셈 관계를 만족하는 시퀀스를 형성할 수 있는 문자열을 의미합니다. 유효한 덧셈 수열이 되려면 최소 세 개의 숫자를 포함해야 하며, 첫 번째와 두 번째 숫자를 제외한 나머지 모든 숫자는 반드시 바로 앞에 있는 두 숫자의 합과 일치해야 합니다. 즉, 0부터 9까지의 숫자만 포함된 문자열이 주어졌을 때, 이 문자열이 덧셈 수열에 해당하는지 판별하는 함수를 작성하는 것이 목표입니다. 주의: 덧셈 수열을 이루는
정렬된 배열(오름차순이든 내림차순이든)을 다룰 때는 이진 탐색(Binary Search)이 가장 최적화되고 효율적인 탐색 알고리즘입니다. 이진 탐색은 배열의 중간 요소를 기준으로 탐색 범위를 절반씩 줄여 나가는 방식으로 동작하기 때문에, 시간 복잡도가 O(log n)으로 선형 탐색(O(n))보다 훨씬 빠릅니다.이번 글에서는 정렬된 리터럴 배열에서 특정 대상(target) 값을 찾는 이진 탐색 함수를 작성하고, 이를 Array 객체의 prototype 속성에 연결하여 어떤 배열에서든 바로 호출할 수 있도록 만들어 보겠습니다.이진 탐색
개요리터럴 값으로 구성된 배열을 인자로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 원본 배열에서 고유하지 않은 요소, 즉 중복된 값만 골라내어 새로운 배열을 만들어 반환해야 합니다.예시입력 배열이 다음과 같다고 가정해 보겠습니다.const arr = [3, 6, 7, 5, 3];위 배열에서 숫자 3은 두 번 등장하므로 중복 요소입니다. 따라서 기대하는 출력 결과는 다음과 같습니다.const output = [3];구현 코드이 문제는 lastIndexOf() 메서드를 활용하면 간단하게 해결할 수 있습니다. 각 요소에
문제 상황알파벳 문자들이 담긴 배열이 있고, 그중 일부 알파벳은 여러 번 반복되어 있다고 가정해 보겠습니다.const arr = [ a,a,a,a,d,e,e,f,h,h,h,i,l,m,n, r,s,s,t,u,v,y,y ];이런 배열을 입력받아 동일한 알파벳끼리 각각의 하위 배열(subarray)로 묶어주는 JavaScript 함수를 작성해야 합니다.즉, 위 배열에 대해 함수가 반환해야 하는 결과는 다음과 같습니다.const output = [ [a,a,a,a], [d], [e,e], [f], [h,h,h], [i], [
개요JavaScript에서 일반적인 Number 타입은 안전하게 표현할 수 있는 정수 범위가 제한되어 있습니다(약 2^53 - 1까지). 따라서 10 이상의 숫자를 팩토리얼하면 결과가 이 범위를 훌쩍 넘어가며, 정밀도 손실 없이는 계산할 수 없습니다.이 문제를 해결하기 위해 JavaScript는 임의 정밀도 정수를 다룰 수 있는 BigInt 타입을 제공합니다. 이 글에서는 BigInt를 활용해 매우 큰 수의 팩토리얼을 정확하게 계산하고, 그 결과를 문자열로 반환하는 함수를 작성하는 방법을 알아보겠습니다.문제 정의숫자 하나를 입력으로
문제 개요정수로 이루어진 배열이 주어졌을 때, 인접한 두 요소 사이의 절대 차이 중 가장 큰 값을 찾는 것이 이번 문제의 목표입니다.예를 들어 다음과 같은 입력 배열이 있다고 가정해 보겠습니다.const arr = [2, 4, 1, 0];이 경우 기대되는 출력값은 다음과 같습니다.const output = 3;그 이유는 배열에서 인접한 요소인 4와 1 사이의 절대 차이(|4 − 1| = 3)가 모든 인접 쌍 중에서 가장 크기 때문입니다.해결 방법배열의 각 인접 요소 쌍을 순회하면서 절대 차이를 계산하고, 그중 최댓값을 반환하면 됩니
문제 소개이번 글에서는 숫자 배열을 첫 번째 인수로, 그룹의 크기를 나타내는 숫자 n을 두 번째 인수로 받는 JavaScript 함수를 작성해 보겠습니다. 이 함수는 배열을 n개의 요소씩 묶어 각 그룹의 평균값을 계산한 뒤, 그 결과들을 새로운 배열로 반환해야 합니다.예를 들어 입력이 다음과 같다면 −const arr = [1, 2, 3, 4, 5, 6];const n = 2;배열을 2개씩 묶으면 [1, 2], [3, 4], [5, 6] 세 개의 그룹이 만들어지므로, 출력은 다음과 같아야 합니다 −const o
JavaScript를 다루다 보면 배열 안에 배열이 중첩된 형태의 데이터를 자주 만나게 됩니다. 예를 들어 다음과 같은 배열의 배열(2차원 배열)이 있다고 가정해 보겠습니다.const arr = [ [ {c: 1},{d: 2} ], [ {c: 2},{d: 3} ] ];여기서 요구되는 작업은 이 배열을 인수로 받아, 중첩된 내부 배열을 제거하고 객체들만 담긴 새로운 단일 배열을 만드는 함수를 작성하는 것입니다.즉, 최종 출력 결과는 다음과 같은 형태가 되어야 합니다.const output = [{c: 1},{d: 2},
문제 상황다음과 같이 위치(location)와 신분(identity_long) 정보를 담고 있는 객체 배열이 있다고 가정해 보겠습니다.const arr = [ {location:Kirrawee,identity_long:student}, {location:Kirrawee,identity_long:visitor}, {location:Kirrawee,identity_long:visitor}, {location:Kirrawee,identity_long:worker}, {location:Sutherland
문제 소개 JavaScript를 다루다 보면 일정한 패턴을 가진 문자열 배열을 구조화된 객체로 변환해야 하는 경우가 자주 발생합니다. 이번 글에서는 하이픈(-)으로 구분된 문자열 배열을 브랜드별 모델 출현 횟수를 담은 중첩 객체로 변환하는 방법을 단계별로 살펴보겠습니다. 문제 상황 다음과 같이 "브랜드-모델" 형태의 문자열로 이루어진 배열이 있다고 가정해 보겠습니다. const arr = [ "fiat-palio", "fiat-stilo", "fiat-stra
숫자 배열을 유일한 입력값으로 받는 JavaScript 함수를 작성해야 합니다. 이때 입력 배열에는 중복된 숫자가 포함되어 있을 수 있습니다.작성할 함수는 배열을 오름차순으로 정렬한 뒤, 동일한(중복된) 숫자들을 각각 별도의 하위 배열로 묶어서 반환해야 합니다.문제 예시입력 배열이 다음과 같다고 가정해 보겠습니다.const arr = [5, 7, 5, 7, 8, 9, 1, 1];그렇다면 기대하는 출력 결과는 다음과 같습니다.const output = [ [1, 1],
문제 상황다음과 같이 여러 개의 객체를 담고 있는 배열이 있다고 가정해 보겠습니다.const arr = [ { Country: BR, New Lv1-Lv2: #N/A }, { Country: BR, New Lv1-Lv2: #N/A }, { Country: , New Lv1-Lv2: test } ];우리가 작성해야 할 JavaScript 함수는 이러한 객체 배열을 입력으로 받아서 다음 두 가지 작업을 수행해
JavaScript로 개발하다 보면 객체 배열을 여러 조건에 따라 정렬해야 하는 경우가 자주 발생합니다. 이번 글에서는 두 개의 속성을 동시에 기준으로 배열을 정렬하는 방법을 살펴보겠습니다.문제 상황다음과 같은 객체 배열이 있다고 가정해 보겠습니다.const arr = [ { resVal: 25FA15, resFlow: 49, resName: Rendimiento Tri-Seal Completo, resPhoto: Tri-Sealseries.png, resHP: 1.5 }, { resVal: 25FA2, resFlow
문제 상황다음과 같이 여러 객체가 담긴 배열이 있다고 가정해 보겠습니다.const arr = [ {code: AA, gender:male, DOB:2000-05-15}, {code: AA, gender:female, DOB:2015-05-15}, {code:A0, gender:female, DOB:2005-01-01}, {code: A1, gender:male,
JavaScript의 고유 정렬(Unique Sort)이란? 배열에서 중복된 값을 제거하는 작업과 오름차순 정렬 작업을 한 번에 처리하는 프로그래밍 기법을 흔히 고유 정렬(Unique Sort)이라고 부릅니다. 실무에서 데이터를 정리할 때 자주 사용되는 패턴입니다. 예를 들어 다음과 같은 입력 배열이 있다고 가정해 보겠습니다. const arr = [1, 1, 1, 3, 2, 2, 8, 3, 4]; 중복을 제거하고 정렬한 뒤 기대되는 출력 결과는 다음과 같습니다. const output = [1, 2, 3, 4, 8]; 구현 예제
다음과 같은 객체 배열이 있다고 가정해 보겠습니다.const arr = [ {name: lorem, age: 20, color:red}, {name: lorem, weight: 1, height:5}, {name: hello, ipsum : dolor} ];이러한 객체 배열을 입력으로 받아, name 속성의 값이 서로 같은 객체들을 하나로 묶어 나머지 속성들을 모두 병합하는 JavaScript 함수를 작성
데이터를 다루다 보면 여러 테이블의 정보가 하나의 배열에 섞여 있는 경우가 많습니다. 이럴 때 특정 키를 기준으로 데이터를 묶어주면 훨씬 다루기 쉬워집니다.예를 들어 다음과 같은 JavaScript 배열이 있다고 가정해 보겠습니다.const data = [ { dataId: 1, tableName: table1, column: firstHeader, rows: [a, b, c] }, { dataId: 2, tableName:
문자열 형태의 날짜 데이터를 다루다 보면, 배열 안에서 가장 오래된 날짜(최솟값)와 가장 최신 날짜(최댓값)를 찾아야 하는 경우가 자주 발생합니다.예를 들어 다음과 같이 날짜 문자열로 이루어진 배열이 있다고 가정해 보겠습니다.const arr = [ 2017-01-22 00:21:17.0, 2017-01-27 11:30:23.0, 2017-01-24 15:53:21.0, 2017-01-27 11:34:18.0, 2017-01-26 16:55:48.0, 2017-01-22 11:57:12.0, 2017-01-
실무에서 데이터를 다루다 보면 객체 배열 안에서 특정 키 조합이 동일한 항목들을 하나로 묶고, 묶인 항목들의 수치 합계와 평균을 구해야 하는 경우가 매우 흔합니다. 이 글에서는 JavaScript의 reduce() 메서드를 활용해 여러 필터 조건(공급자명 + 카테고리)을 기준으로 JSON 형태의 배열을 그룹화하고, 포인트 합계와 평균을 한 번에 계산하는 방법을 단계별로 살펴봅니다. 문제 정의 다음과 같이 공급자 이름(SupplierName), 카테고리(Category), 점수(Points)를 담은 객체 배열이 있다고 가정해 보겠습
문제 소개정수 n이 주어졌을 때, n!(팩토리얼) 값의 끝에서 연속해서 붙는 0, 즉 후행 0(trailing zeroes)의 개수를 반환하는 함수를 작성해야 합니다.예를 들어 다음과 같습니다.trailingZeroes(4) = 0trailingZeroes(5) = 1 // 5! = 120trailingZeroes(6) = 14! = 24는 0으로 끝나지 않으므로 후행 0이 없고, 5! = 120처럼 0으로 끝나는 경우 그 개수를 세면 됩니다. 5!와 6! 모두 120으로 끝나므로 후행 0은 각각 1개입니다.핵심 아이디어: 5의