문제 정의임의의 깊이까지 중첩될 수 있는 배열 arr를 유일한 인수로 받아, 해당 배열의 가중치 합계(weighted sum)를 계산해 반환하는 JavaScript 함수를 작성해야 합니다.여기서 가중치란 각 요소가 위치한 중첩 깊이(레벨)를 의미합니다. 즉, 각 숫자 요소에 자신이 속한 중첩 레벨을 곱한 뒤, 배열 전체의 값을 모두 더하면 됩니다.입력 예시const arr = [4, 7, [6, 1, [5, 2]]];기대 출력const output = 46;출력 설명합계는 다음과 같은 방식으로 계산됩니다.(4 × 1) + (7 ×
문제 정의정수 하나를 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 0부터 num까지(양 끝값 포함)의 모든 숫자에 대한 배열을 생성해야 하며, 배열의 각 요소는 해당 숫자의 이진 표현에 포함된 1의 개수가 되어야 합니다.예를 들어, 함수의 입력이 다음과 같다면 −const num = 4;출력은 다음과 같아야 합니다 −const output = [0, 1, 1, 2, 1];출력 설명0은 이진수로 0이므로 1을 포함하지 않고, 1은 1이므로 1개, 2는 10, 3은 11(2개), 4는
문제 정의문자열 배열을 유일한 인자로 받아, 두 문자열을 서로 결합했을 때 새로운 회문(palindrome) 문자열이 되는 모든 인덱스 쌍을 배열 형태로 반환하는 JavaScript 함수를 작성해야 합니다.예를 들어, 함수에 다음과 같은 입력이 주어졌다고 가정해 보겠습니다.const arr = [tab, cat, bat];이 경우 기대되는 출력은 다음과 같습니다.const output = [[0, 2], [2, 0]];출력 설명battab과 tabbat 두 문자열 모두 앞에서 읽으나 뒤에서 읽으나 동일한 회문이기 때문입니다.구현 예
증가 수열이란?수열에서 각 요소가 바로 앞의 요소보다 크거나 같은 수열을 증가 수열(increasing sequence)이라고 합니다.예를 들면 다음과 같습니다.4, 6, 8, 9, 11, 14 → 증가 수열입니다.3, 3, 3, 3, 3, 3 → 모든 요소가 같아도 증가 수열에 포함됩니다.문제 정의숫자 배열 arr를 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 배열 안에 연속된 세 요소가 증가하는 구간이 존재하는지 확인해야 합니다.예를 들어 함수의 입력이 다음과 같다면,const arr = [4, 1
문제 이해하기숫자 배열 arr을 첫 번째 인수로, 하나의 숫자 num을 두 번째 인수로 받는 자바스크립트 함수를 작성해야 합니다.배열에 요소를 추가하여, 배열에 포함된 숫자들을 조합했을 때 [0, num] 범위(양 끝값 포함) 안의 어떤 합계든 만들어낼 수 있도록 만들어야 합니다. 함수는 최종적으로 이 조건을 충족하기 위해 배열에 추가해야 하는 숫자의 최소 개수를 반환해야 합니다.예를 들어, 함수의 입력이 다음과 같다고 가정해 보겠습니다.const arr = [1, 5, 10];const sum = 20;이때 기대되는 출력은 다음과
증가 수열이란?증가 수열(Increasing Sequence)은 각 원소가 바로 앞의 원소보다 크거나 같은 숫자들의 나열을 의미합니다.예를 들면 다음과 같습니다.4, 6, 8, 9, 11, 14 → 증가 수열3, 3, 3, 3, 3, 3, 3 → 역시 증가 수열문제 정의숫자로 이루어진 2차원 배열 arr을 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 배열 안에서 상하좌우로 이동하며 만들 수 있는 경로 중, 값이 계속 증가하기만 하는 가장 긴 경로의 길이를 찾아 반환해야 합니다.예를 들어 함수에 다음과
구간 합(Range Sum)이란? 구간 합 rangeSum(i, j)은 배열에서 인덱스 i부터 j까지(i ≤ j)에 해당하는 요소들의 합으로 정의됩니다. 즉, 연속된 부분 배열의 요소들을 모두 더한 값이라고 할 수 있습니다. 문제 설명 이번 문제에서는 정수 배열 arr을 첫 번째 인자로, 두 개의 숫자 lower와 upper를 각각 두 번째, 세 번째 인자로 받는 JavaScript 함수를 작성해야 합니다. 함수는 가능한 모든 구간 합 중에서 [lower, upper] 범위(양 끝값 포함)에 속하는 구간 합의 개수를 반환해야 합
문제 이해하기숫자 배열 arr를 유일한 인수로 받아, 정렬 후 요소들이 다음과 같은 패턴을 따르도록 만드는 JavaScript 함수를 작성해야 합니다.arr[0] < arr[1] > arr[2] < arr[3]...쉽게 말해, 값이 오르락내리락하는 웨이브(wave) 모양으로 배열을 재배치하는 것입니다. 예를 들어 다음과 같은 입력이 주어지면,const arr = [1, 5, 1, 1, 6, 4];가능한 출력 중 하나는 다음과 같습니다. 조건만 만족하면 여러 가지 정답이 존재할 수 있습니다.const output =
문제 상황다음과 같이 각 행이 오름차순으로 정렬된 숫자 2차원 배열이 있다고 가정해 보겠습니다.const arr = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15] ];우리가 작성해야 할 JavaScript 함수는 첫 번째 인수로 이러한 배열을, 두 번째 인수로 하나의 정수 num을 받습니다. 그리고 이 함수는 배열 arr에 존재하는 요소들 중 num번째로 작은 값을 반환해야 합니
문제 소개이번 글에서는 고유한 정수로 이루어진 배열 arr을 첫 번째 인자로, 목표 합 target을 두 번째 인자로 받는 JavaScript 함수를 작성해 보겠습니다.함수의 목표는 숫자의 중복 사용을 허용하면서 목표 합을 만들 수 있는 모든 조합의 개수를 세어 반환하는 것입니다.예를 들어, 함수의 입력이 다음과 같다면 —const arr = [1, 2, 3];const target = 4;출력 결과는 다음과 같아야 합니다 —const output = 7;출력 설명목표 합 4를 만들 수 있는 가능한 조합은 총 7가지입니다 —(1,
문제 이해하기 정렬된 두 개의 정수 배열 arr1과 arr2를 각각 첫 번째, 두 번째 인수로 받는 JavaScript 함수를 작성해야 합니다. 세 번째 인수는 숫자 num이며, num은 항상 두 배열의 길이보다 작은 값입니다. 함수의 목표는 정확히 num개의 정수 쌍(pair)을 선택하는 것입니다. 각 쌍의 첫 번째 요소는 arr1에서, 두 번째 요소는 arr2에서 가져와야 하며, 선택된 쌍들은 가능한 한 가장 작은 합을 가져야 합니다. 최종적으로 함수는 이렇게 선택된 num개의 쌍을 배열 형태로 반환합니다. 예를 들어, 함수에
문제 소개첫 번째 인자로 2차원 숫자 배열을, 두 번째 인자로 목표 합(target)을 받는 JavaScript 함수를 작성해야 합니다.이 함수는 배열 안에서 만들 수 있는 모든 직사각형(연속된 부분 행렬) 중에서 합이 가장 크면서 목표 값보다 작거나 같은 직사각형을 찾고, 그 합을 반환해야 합니다.예를 들어, 함수의 입력이 다음과 같다고 가정해 보겠습니다.const arr = [ [1, 0, 1], [0, -2, 3] ]; const num = 2;이 경우 원하는 출력은 다음과 같습니다.const output = 2
문제 정의2차원 격자(grid)가 주어집니다. 각 칸은 세 가지 값 중 하나입니다. 벽(W), 적(E), 또는 빈 공간(0)입니다. 우리가 작성해야 할 함수는 폭탄 하나를 사용했을 때 최대 몇 명의 적을 처치할 수 있는지를 반환해야 합니다.폭탄이 설치된 지점을 기준으로 같은 행과 같은 열에 있는 모든 적을 처치합니다. 단, 벽을 만나면 더 이상 진행되지 않습니다. 벽은 너무 튼튼해서 폭탄으로도 파괴할 수 없기 때문입니다.또한 한 가지 조건이 더 있습니다. 폭탄은 반드시 빈 칸(0)에만 설치할 수 있다는 점입니다.입력 예시const
문제 개요다음과 같은 수학적 함수가 주어져 있다고 가정해 보겠습니다.f(x) = ax² + bx + c여기서 a, b, c는 세 개의 상수입니다.우리가 작성해야 할 것은 JavaScript 함수입니다. 이 함수는 첫 번째 인자로 정렬된 정수 배열 arr를, 두 번째, 세 번째, 네 번째 인자로 각각 a, b, c를 받습니다.함수는 배열 arr의 모든 요소에 f(x)를 적용한 뒤, 변환된 배열을 오름차순으로 정렬하여 반환해야 합니다.입력 예시const arr = [-8, -3, -1, 5, 7, 9]; const a = 1; cons
문제 상황첫 번째 인수로 문자열 str을, 두 번째 인수로 숫자 num(문자열 길이보다 작은 값)을 받는 JavaScript 함수를 작성해야 합니다.이 함수는 문자열 str의 문자들을 재배치하여 새로운 문자열을 만들어야 하며, 이때 같은 문자끼리는 최소 num칸 이상 떨어져 있어야 합니다. 즉, 동일한 문자가 서로 너무 가까운 위치에 배치되지 않도록 순서를 조정하는 것이 핵심입니다.함수는 최종적으로 새로 구성된 문자열을 반환하며, 만약 그러한 배치가 불가능한 경우에는 빈 문자열()을 반환해야 합니다.예를 들어 함수의 입력이 다음과
이번 글에서는 하나의 숫자를 인수로 받아, 해당 숫자만큼의 자릿수를 가지면서 모든 자릿수가 서로 중복되지 않는 고유한 숫자의 개수를 세는 자바스크립트 함수를 만들어 보겠습니다. 문제 정의 함수는 num이라는 숫자 하나를 유일한 인수로 받습니다. 그리고 num자리 숫자들 중에서 각 자릿수가 모두 서로 다른 숫자들의 총 개수를 반환해야 합니다. 예를 들어 함수에 다음과 같은 입력이 주어졌다고 가정해 봅시다. const num = 1; 이때 기대하는 출력은 다음과 같습니다. const output = 10; 출력 설명 1자리 숫자인
문제 상황두 개의 배열 arr1과 arr2를 각각 첫 번째, 두 번째 인자로 받아 두 배열의 교집합(공통 요소)을 구하는 JavaScript 함수를 작성해야 합니다. 여기서 중요한 조건은, 특정 요소가 양쪽 배열에 여러 번 등장한다면 결과 배열에도 그 등장 횟수만큼 중복해서 포함해야 한다는 점입니다.예를 들어 함수에 다음과 같은 입력이 주어졌다고 가정해 보겠습니다.const arr1 = [2, 7, 4, 6, 7, 4]; const arr2 = [7, 1, 9, 7, 4, 5];숫자 7은 두 배열 모두에서 두 번씩 등장하고, 숫자
문제 소문자 영어 알파벳으로 이루어진 문자열 하나를 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 문자열 내 자음들의 순서만 거꾸로 뒤집고, 모음은 원래의 상대적 위치에 그대로 유지한 새로운 문자열을 만들어 반환해야 합니다. 예를 들어, 함수에 다음과 같은 문자열이 입력된다고 가정해 보겠습니다. const str = somestring; 이때 기대되는 출력 결과는 다음과 같습니다. const output = gonertsims; 접근 방법: 투 포인터(Two Pointer) 기법 이 문제는 투 포인터 기법으로
JavaScript에서는 insertRule() 메서드를 사용해 스타일시트의 원하는 위치에 새로운 CSS 규칙을 동적으로 추가할 수 있으며, deleteRule() 메서드를 사용하면 특정 위치의 스타일 규칙을 삭제할 수 있습니다.insertRule(rule, index)은 첫 번째 인자로 CSS 규칙 문자열을, 두 번째 인자로 삽입할 위치(인덱스)를 받습니다. deleteRule(index)은 삭제할 규칙의 인덱스를 인자로 받습니다. 아래 예제들을 통해 실제 사용 방법을 살펴보겠습니다.예제 1: insertRule()로 새 규칙 추
라이트박스(Lightbox)는 웹페이지에서 썸네일 이미지를 클릭하면 화면 위에 큰 이미지가 나타나는 UI 패턴입니다. CSS와 JavaScript만으로도 별도의 라이브러리 없이 세련된 라이트박스 애니메이션을 구현할 수 있습니다.아래 예제에서는 CSS의 :target 선택자와 트랜지션(transition)을 활용하여, 작은 썸네일을 클릭하면 부드럽게 확대되는 라이트박스 효과를 만들어 보겠습니다. 닫기 버튼 역시 CSS만으로 X 모양을 그려내고, 클릭 시 자연스러운 애니메이션과 함께 사라지도록 구성했습니다.주요 구현 포인트:target