숫자 배열을 인자로 받는 JavaScript 함수를 작성해야 합니다. 이 배열에는 양수와 음수가 모두 포함될 수 있습니다.함수의 목적은 배열 내에서 연속된 요소들로 이루어진 부분 배열(subarray) 중, 그 합이 최대가 되는 부분 배열을 찾아 해당 합을 반환하는 것입니다. 부분 배열의 길이에는 제한이 없습니다.문제 예시입력 배열이 다음과 같다고 가정해 보겠습니다.const arr = [-2, 1, -3, 4, -1, 2, 1, -5, 4];이 경우 기대하는 출력은 다음과 같습니다.const output = 6;그 이유는 [4,
문자열 처리 알고리즘 문제 중 하나로, ( 와 ) 두 가지 문자로만 구성된 문자열이 주어졌을 때, 그중에서 가장 긴 유효한(잘 짜인) 괄호 부분 문자열의 길이를 찾는 방법을 알아보겠습니다.유효한 괄호란?괄호 집합이 잘 짜인(well-formed) 상태가 되려면, 모든 여는 괄호 (에 대해 반드시 짝이 되는 닫는 괄호 )가 존재해야 합니다.예를 들어 다음과 같습니다.(())() → 잘 짜인 괄호 문자열입니다()) → 잘 짜인 괄호 문자열이 아닙니다()()() → 잘 짜인 괄호 문자열입니다해결 접근 방식: 스택(Stack) 활용이
문제 이해하기수학에서 자연수는 1부터 시작하여 무한히 이어지는 수를 의미합니다. 처음 15개의 자연수는 다음과 같습니다.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15이 수열을 자릿수 단위로 읽으면, 첫 번째 자릿수는 1, 두 번째는 2, 세 번째는 3처럼 이어집니다. 그런데 9를 지나면 상황이 달라집니다. 열 번째 자릿수는 10의 첫 자리인 1이 되고, 열한 번째 자릿수는 그다음 자리인 0입니다.즉, 이 문제는 자연수를 한 줄로 이어 붙여 만든 무한한 숫자 문자열에서 n번째 위치에 있는 숫자 하나를 찾는 것입니다.
문제 소개두 개의 문자열 s와 t가 주어집니다. 문자열 t는 문자열 s를 무작위로 섞은 뒤, 임의의 위치에 글자 하나를 추가하여 생성된 것입니다.이제 두 문자열을 인수로 받아 t에 추가된 바로 그 글자를 반환하는 자바스크립트 함수를 작성해야 합니다.예를 들어 입력 문자열이 다음과 같다면,const s = abcd, t = abcde;출력 결과는 다음과 같아야 합니다.const output = e;e가 s에는 없고 t에만 존재하는, 즉 추가된 글자이기 때문입니다.해결 접근 방식: XOR 연산 활용이 문제는 XOR(배타적 논리합) 연산
삼각형의 둘레(perimeter)란 세 변의 길이를 모두 더한 값입니다. 이번 문제에서는 최소 세 개 이상의 숫자를 담은 배열을 입력받아 처리하는 자바스크립트 함수를 작성해야 합니다.작성할 함수는 배열에서 가장 긴 세 변(가장 큰 숫자)을 골라 그 합이 최대 둘레가 되도록 해야 하며, 동시에 선택된 세 변이 실제로 삼각형을 형성할 수 있는지 반드시 검증해야 합니다. 만약 배열 안에서 유효한 삼각형을 만들 수 있는 세 변이 존재하지 않는다면 0을 반환하면 됩니다.여기서 유효한(valid) 삼각형이란, 어떤 두 변의 길이 합이 항상 나
이번 글에서는 길이에 상관없이 문자열을 입력받아, 해당 문자열 안에 포함된 단어의 개수를 세어 반환하는 JavaScript 함수를 작성해 보겠습니다.예제 코드const str = THis is an example string; { if(!str.length){ return 0; }; let count = 1;  
문제 상황다음과 같이 숫자로 이루어진 중첩 배열(nested array)이 있다고 가정해 보겠습니다.const arr = [ [ 0, 0, 0, -8.5, 28, 8.5 ], [ 1, 1, -3, 0, 3, 12 ], [ 2, 2, -0.5, 0, 0.5, 5.3 ] ];여기서 요구되는 것은, 이런 형태의 중첩 배열을 입력받아 배열 안의 모든 숫자를 하나의 문자열로 합쳐주는 자바스크립트 함수입니다.결과 문자열에서는 인접한 숫자 사이가 공백으로 구분되고, 서로 인접한 두 배열의 요소 사이는 쉼표(,)로 구분되어야
신발(Shoe) 객체를 생성하는 생성자 클래스가 있다고 가정해 보겠습니다.class Shoe { constructor(name, price, type) { this.name = name; this.price = price; this.type = type; } };이 클래스를 활용하면 다음과 같이 여러 개의 객체로 배열을 채울 수 있습니다.const arr = [ new Shoe(Nike AirMax 90, 120, Casual), new Shoe(Jordan R
다음과 같은 형식의 문자열이 있다고 가정해 보겠습니다.const str = dress/cotton/black, dress/leather/red, dress/fabric, houses/restaurant/small, houses/school/big, person/james;이 문자열을 받아서 각 카테고리(dress, houses, person)를 키로 하고, 그 뒤에 오는 값들을 모아 담은 배열을 값으로 갖는 객체를 만들어야 합니다. 즉, 최종적으로 다음과 같은 구조가 되어야 합니다.const output = {
문제 상황다음과 같은 객체 배열이 있다고 가정해 보겠습니다.const arr = [ {goods:Wheat, from:GHANA, to:AUSTRALIA}, {goods:Wheat, from:USA, to:INDIA}, {goods:Wheat, from:SINGAPORE, to:MALAYSIA}, {goods:Wheat, from:USA, to:INDIA}, ];여기서 우리는 이러한 배열을 인자로 받는 J
실무에서 서버로부터 데이터를 받아오다 보면, 배열 안의 객체마다 특정 속성의 존재 여부가 다른 경우를 자주 만나게 됩니다. 예를 들어 어떤 객체에는 date 필드가 문자열 형태로 담겨 있지만, 다른 객체에는 이 필드가 null이거나 아예 존재하지 않을 수 있습니다.이렇게 불균형한 데이터를 단순한 정렬 로직으로 처리하면 오류가 발생하거나 의도와 다른 순서로 정렬됩니다. 이 글에서는 Array.prototype.sort()의 비교 함수(comparator)를 활용해 이런 상황을 깔끔하게 해결하는 방법을 살펴보겠습니다.요구 사항 정리날짜
JavaScript 개발을 하다 보면 객체 배열에 담긴 여러 속성 값들을 하나의 배열로 추출해야 하는 경우가 자주 발생합니다. 예를 들어 다음과 같은 객체 배열이 있다고 가정해 보겠습니다.const arr = [ {a: 1, b: 2}, {a: 3, b: 4}, {a: 5, b: 6} ];여기서 요구되는 것은 이러한 객체 배열을 입력으로 받아, 각 객체가 가진 모든 속성 값을 순서대로 하나의 숫자 배열로 변환하는 함수입니다. 즉, 아래와 같은 결과를 얻어야 합니다.const output = [1, 2, 3, 4
이번 글에서는 숫자 배열을 첫 번째 인수로 받고, 두 번째 인수로 상한(upper limit), 세 번째 인수로 하한(lower limit)을 받는 JavaScript 함수를 작성해 보겠습니다.이 함수의 역할은 주어진 배열을 필터링하여, 상한과 하한으로 지정된 범위에 속하는 요소들만 모아 새로운 배열로 반환하는 것입니다. 이때 상한값과 하한값 자체도 결과에 포함됩니다(경계값 포함).예제 코드const array = [18, 23, 20, 17, 21, 18, 22, 19, 18, 20]; const lower = 18; const
데이터를 다루다 보면 배열 안에 여러 개의 배열이 중첩된 2차원(2D) 테이블 형태의 데이터를 자주 접하게 됩니다. 이런 구조는 사람이 읽기에는 직관적이지만, 프로그래밍으로 활용할 때는 각 행을 의미 있는 속성을 가진 객체로 변환하는 것이 훨씬 편리합니다.이번 글에서는 2차원 배열 데이터를 첫 번째 열의 값을 기준으로 그룹화하여, 하나의 객체로 묶인 새로운 배열로 변환하는 방법을 알아보겠습니다.문제 상황예를 들어, 다음과 같이 이름, 날짜, 점수가 담긴 배열의 배열이 있다고 가정해 보겠습니다.const arr = [ &n
이번 글에서는 쉼표(,)로 구분된 두 개의 문자열을 입력받아 하나의 객체(Object)를 생성하는 자바스크립트 함수를 만들어 보겠습니다.첫 번째 문자열은 키(key)가 담긴 문자열이고, 두 번째 문자열은 값(value)이 담긴 문자열입니다. 두 문자열에 포함된 요소의 개수는 항상 동일하다고 가정하며, 우리가 작성할 함수는 첫 번째 문자열의 각 키에 두 번째 문자열의 대응되는 값을 매핑한 객체를 반환해야 합니다.문제 이해하기예를 들어 키 문자열이 [atty_hourly_rate], [paralegal_hourly_rate], [adv
실무에서는 여러 개의 배열을 값으로 가지는 객체를 마주치는 경우가 많습니다. 이럴 때 객체에 담긴 모든 배열을 하나의 평탄화(flattened)된 배열로 합쳐야 할 필요가 생기는데요, 이번 글에서는 그 해결 방법을 단계별로 살펴보겠습니다.예를 들어 다음과 같은 객체가 있다고 가정해 보겠습니다.const obj = { arr_a: [9, 3, 2], arr_b: [1, 5, 0], arr_c: [7, 18]
이번 글에서는 숫자로 이루어진 두 개의 정렬된 배열을 인자로 받아, 두 배열을 하나로 합친 뒤에도 정렬 상태가 유지되는 결과 배열을 만들어 반환하는 JavaScript 함수를 작성해 보겠습니다.문제 이해하기예를 들어 다음과 같은 두 개의 정렬된 배열이 있다고 가정해 보겠습니다.const arr1 = [2, 6, 6, 8, 9]; const arr2 = [1, 4, 5, 7];이 두 배열을 병합하면 최종 출력은 다음과 같아야 합니다.const output = [1, 2, 4, 5, 6, 6, 7, 8, 9];접근 방식: 뒤에서부터 채
다음과 같이 두 개의 객체 배열이 있다고 가정해 보겠습니다. const arr1 = [ {name:'test', lastname: 'test', gender:'f'}, {name:'test1', lastname: 'test1', gender:'f'}, {name:'test2', lastname: 'test2', gender:'m'} ];
다음과 같은 JSON 객체 배열이 있다고 가정해 보겠습니다.const arr = [ { id: 03868185, month_10: 6, }, { id: 03870584, month_6: 2, }, { id: 03870584, month_7: 5, }, { id: 51295, month_1: 1, }, { id: 51295, mo
두 개의 숫자로 이루어진 배열이 주어졌다고 가정해 보겠습니다. 이 배열은 하나의 범위(range)를 지정하며, 우리는 다음 조건을 만족하는 함수를 작성해야 합니다.즉, 주어진 두 숫자의 최소 공배수를 구하되, 그 값이 두 숫자뿐만 아니라 두 숫자 사이에 있는 모든 연속된 정수로도 나누어 떨어져야 하는 것입니다.여기서 범위는 반드시 오름차순으로 정렬되어 있지 않을 수 있습니다. 따라서 입력 배열의 순서와 무관하게 동작해야 합니다.문제 이해하기예를 들어 [1, 3]이 주어진 경우를 살펴보겠습니다. 이때 구해야 하는 값은 1과 3의 최소