문제 소개두 개의 숫자 배열 arr1과 arr2를 각각 첫 번째, 두 번째 인수로 받아 처리하는 JavaScript 함수를 작성해야 합니다.이 함수의 역할은 두 배열의 요소를 하나의 새로운 배열로 병합하는 것입니다. 이때 병합 전이나 병합 과정에서 중복된 값이 발견되면 나머지 중복 항목은 모두 제거하여, 각 요소가 최종 배열에 정확히 한 번만 존재하도록 만들어야 합니다.요소들의 순서는 크게 중요하지 않지만, 모든 요소의 등장 빈도가 반드시 1이 되어야 한다는 점이 핵심입니다.예를 들어, 함수에 다음과 같은 입력이 주어졌다고 가정해
문제 소개소문자 영어 알파벳으로만 구성된 문자열 str을 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다.이 함수는 입력 문자열을 바탕으로 각 문자를 영어 알파벳 역순(z → a) 기준으로 정렬한 새로운 문자열을 생성하여 반환해야 합니다.예를 들어, 함수에 다음과 같은 입력이 주어졌다고 가정해 보겠습니다.const str = abcdef;그렇다면 기대되는 출력 결과는 다음과 같습니다.const output = fedcba;해결 방법 1: 사용자 정의 비교 함수 활용가장 대표적인 접근 방식은 문자열을 한 글
문제 개요알파벳, 특수 문자, 숫자가 뒤섞여 있는 하나의 문자열이 주어졌을 때, 이 문자열에서 숫자만 골라내는 JavaScript 함수를 작성해야 합니다.함수는 원본 문자열에 있는 숫자들만 모아 새로운 문자열로 반환하며, 이때 숫자들이 원래 문자열에서 등장한 순서(상대적 순서)는 그대로 유지되어야 합니다.예를 들어 입력 문자열이 다음과 같다면,const str = revd1fdfdfs2v34fd5gfgfd6gffg7ds;출력 결과는 아래와 같아야 합니다.const output = 1234567;해결 방법 1: 반복문 사용가장 직관적
문제 상황JavaScript에서 두 개의 중첩(nested) 배열 arr1과 arr2를 인자로 받아, 두 배열의 모든 요소를 하나의 1차원 배열로 평탄화(flatten)한 새로운 배열을 반환하는 함수를 작성해야 합니다.예를 들어 함수에 다음과 같은 입력이 주어졌다고 가정해 보겠습니다.const arr1 = [ 1, [ 2, [ 4, 5, [ 6 ] ] ] ]; const arr2 = [ 11, 12, [ 16, 18
문제 개요숫자로 이루어진 배열 arr를 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다.이 함수는 배열 내에서 최댓값과 최솟값의 차이가 정확히 1이 되는 부분 배열 중 가장 긴 것의 길이를 찾아 반환해야 합니다.예를 들어, 함수에 다음과 같은 입력이 주어졌다고 가정해 보겠습니다.const arr = [2, 4, 3, 3, 6, 3, 4, 8];이 경우 기대되는 출력은 다음과 같습니다.const output = 5;출력 설명정답이 5인 이유는 조건을 만족하는 가장 긴 부분 배열이 [4, 3, 3, 3, 4]
문제 이해숫자로 이루어진 배열 arr를 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다.이 함수는 하나의 연속된 부분 배열(continuous subarray)을 찾아야 합니다. 즉, 해당 부분 배열만 오름차순으로 정렬했을 때 전체 배열 역시 오름차순으로 정렬되도록 만드는 최소 길이의 구간을 구하고, 그 길이를 반환하면 됩니다.예를 들어 함수에 다음과 같은 입력이 주어졌다고 가정해 보겠습니다.const arr = [3, 7, 5, 9, 11, 10, 16];이때 기대하는 출력은 다음과 같습니다.const
문제 정의숫자로 이루어진 2차원 배열 arr을 첫 번째 인수로, 그리고 원하는 행렬의 행(row) 개수 r과 열(column) 개수 c를 각각 인수로 받는 JavaScript 함수를 작성해야 합니다.이 함수는 입력 배열의 요소들을 기존과 동일한 행 우선 순회(row-traversing) 순서를 유지하면서, 지정된 행과 열의 크기를 가진 새로운 2차원 배열을 만들어 반환해야 합니다.입력 예시const arr = [ [6, 7], [8, 9] ]; const r = 1, c = 4;출력 결과const output = [[
문제 이해하기숫자 배열 arr를 유일한 인자로 받는 JavaScript 함수를 작성해야 합니다.길이가 N인 배열 arr에는 0부터 N-1까지의 모든 정수가 포함되어 있습니다. 우리 함수는 다음 규칙에 따라 집합 S의 최대 길이를 찾아 반환해야 합니다.집합 S[i] = {A[i], A[A[i]], A[A[A[i]]], ...} 형태로 정의됩니다. 즉, 첫 번째 요소는 인덱스 i에 해당하는 A[i]로 시작하고, 다음 요소는 A[A[i]], 그다음은 A[A[A[i]]] 순서로 이어집니다. 이 과정은 집합 S 안에 중복된 요소가 나타나기
문제 소개숫자 배열 arr을 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다.함수의 목표는 배열에서 세 개의 숫자(트리플렛)를 골랐을 때, 이를 삼각형의 세 변의 길이로 사용할 수 있는 경우의 수를 모두 세는 것입니다.삼각형이 성립하려면 가장 긴 변의 길이가 나머지 두 변의 길이의 합보다 작아야 합니다. 즉, 세 변을 a ≤ b ≤ c라고 할 때 a + b > c를 만족해야 합니다.예시예를 들어 함수에 다음과 같은 입력이 주어진다면,const arr = [2, 2, 3, 4];출력은 다음과 같아야 합
문제 소개이번 글에서는 소문자 영어 알파벳 문자 하나를 입력받아, 해당 문자가 알파벳에서 몇 번째 위치하는지 1부터 시작하는 인덱스(1-based index)로 반환하는 JavaScript 함수를 작성해 보겠습니다.예를 들어 a는 1을, b는 2를, j는 10을 반환해야 합니다.해결 아이디어가장 간단한 방법은 알파벳 전체를 담은 참조 문자열(legend)을 만들어 두고, indexOf() 메서드로 문자의 위치를 찾는 것입니다.여기서 핵심 트릭은 참조 문자열 맨 앞에 공백 한 칸을 추가하는 것입니다. 이렇게 하면 a의 인덱스가 0이
문제 소개숫자 배열을 입력받는 JavaScript 함수를 작성해야 합니다. 이 함수는 입력 배열을 기반으로 새로운 출력 배열을 구성한 뒤 반환하는 역할을 합니다.출력 배열의 각 요소에는, 원본 배열에서 해당 요소의 오른쪽에 위치하면서 그 값보다 작은 숫자의 개수가 들어가야 합니다.예제예를 들어 입력 배열이 다음과 같다고 가정해 보겠습니다.const arr = [6, 2, 8, 5, 1, 3];첫 번째 요소 6의 오른쪽에는 2, 5, 1, 3이라는 네 개의 더 작은 숫자가 있으므로 출력 배열의 첫 번째 값은 4가 됩니다. 같은 방식으
문제 개요양의 정수로 이루어진 배열을 입력받아, 각 요소를 문자열 형태의 정수로 변환한 새로운 배열을 반환하는 JavaScript 함수를 작성해야 합니다.변환된 배열의 각 값은 첫 번째 요소에 더하거나 빼야 하는 수를 의미합니다. 즉, 첫 번째 요소를 기준으로 각 요소가 얼마나 떨어져 있는지를 부호와 함께 표현하는 것입니다.예시다음과 같은 배열이 주어졌을 때:[4, 3, 6, 2]함수는 아래와 같은 결과를 반환해야 합니다.[+0, -1, +2, -2]첫 번째 요소 4를 기준으로 살펴보면, 4는 변화가 없으므로 +0, 3은 1을 빼야
문제 소개이번 글에서는 숫자 n을 입력받아, 다음 조건을 만족하는 정수 쌍 [a, b]를 배열 형태로 생성하는 JavaScript 함수를 작성해 보겠습니다.0 <= a <= b <= n즉, 0부터 n까지의 범위 안에서 첫 번째 값(a)이 두 번째 값(b)보다 작거나 같은 모든 조합을 찾아내는 것이 목표입니다.해결 방법가장 직관적인 접근 방식은 중첩 반복문(nested loop)을 사용하는 것입니다.바깥쪽 반복문은 a 값을 0부터 n까지 순회합니다.안쪽 반복문은 b 값을 현재 a부터 n까지 순회합니다.각 단계에서 [a
문제 소개이번 글에서는 JavaScript 함수를 작성하여 하나의 숫자를 입력받고, 각 자릿수가 바로 왼쪽에 있는 자릿수로 나누어 떨어지는지 검사한 뒤, 그 결과를 불리언(Boolean) 배열로 반환하는 방법을 알아보겠습니다.첫 번째 자릿수 앞에는 어떤 숫자도 존재하지 않기 때문에, 결과 배열의 첫 번째 요소는 항상 false가 됩니다.해결 접근 방식구현 과정은 다음과 같습니다.1. 입력받은 숫자를 toString() 메서드로 문자열로 변환합니다.2. 결과 배열을 첫 번째 값 false로 초기화합니다.3. 두 번째 자릿수부터 마지막
문제 소개이번 글에서는 JavaScript 함수를 작성해 보겠습니다. 이 함수는 정수로 이루어진 배열을 인자로 받아, 배열을 내림차순으로 정렬한 다음 인접한 두 요소 사이의 차이를 모두 더한 값을 반환해야 합니다.예를 들어 배열이 다음과 같다고 가정해 보겠습니다.[6, 2, 15]내림차순으로 정렬하면 [15, 6, 2]가 되고, 따라서 기대하는 출력 결과는 다음과 같습니다.(15 - 6) + (6 - 2) = 13풀이 접근 방법이 문제는 다음 단계로 해결할 수 있습니다.1. sort() 메서드와 비교 함수 (a, b) => b
문제 개요하나의 숫자 n을 입력받아, 해당 숫자의 자릿수들을 재배열하여 만들 수 있는 최댓값을 반환하는 JavaScript 함수를 작성하는 것이 과제입니다.예를 들어 입력이 124라면, 자릿수 1, 2, 4 중 가장 큰 숫자부터 내림차순으로 배치하여 421을 반환해야 합니다.접근 방법자릿수를 재배열해 가장 큰 수를 만들려면 다음과 같은 논리가 성립합니다.큰 자릿수(백의 자리, 십의 자리 등)에 올수록 더 큰 숫자를 배치해야 전체 값이 커집니다.따라서 숫자를 문자열로 변환한 뒤 각 자릿수로 분리하고, 이를 내림차순으로 정렬한 후 다시
문제 소개JavaScript 함수를 작성해야 합니다. 이 함수는 문자열 형태의 숫자 하나를 유일한 인자로 받습니다.함수의 목표는 입력받은 숫자의 뒤쪽 절반(후반부) 자릿수를 모두 0으로 변경한 결과를 반환하는 것입니다.자릿수가 홀수인 경우에는 가운데 자릿수부터 끝까지 모두 0으로 바꿔야 합니다.예를 들어 다음과 같습니다.938473 → 938000예제 코드다음은 위 문제를 해결하는 코드입니다.const num = '938473';const convertHalf = (num = '') =>
문제 설명두 개의 배열 arr1과 arr2를 각각 첫 번째, 두 번째 인수로 받는 JavaScript 함수를 작성해야 합니다.함수는 두 배열에 공통으로 존재하는 요소 중 리스트 인덱스 합(list index sum)이 가장 작은 요소를 찾아 반환해야 합니다. 만약 조건을 만족하는 요소가 여러 개라면(동률인 경우) 순서에 상관없이 모두 출력하면 됩니다.예를 들어, 함수의 입력이 다음과 같다고 가정해 보겠습니다.const arr1 = [a, b, c, d];const arr2 = [d, a, c];그렇다면 출력 결과는 다음과 같아야 합
문제 정의숫자로 이루어진 세 개의 배열을 입력받는 JavaScript 함수를 작성해야 합니다. 이 함수는 세 배열 모두에 공통으로 존재하는 요소들만 골라내어 그 합을 반환해야 합니다. 중복된 값이 있는 경우에는 각 배열에서 실제로 짝이 맺어지는 횟수만큼만 합산하는 것이 핵심입니다.코드 예제다음은 세 배열의 공통 요소 합을 구하는 전체 코드입니다. { let sum = 0; for(let i = 0; i < arr1.length; i++){ const el = arr1[i]; const in
문제 설명n개의 문자열을 담고 있는 배열을 입력으로 받는 JavaScript 함수를 작성해야 합니다. 이때 배열의 각 문자열은 정확히 n개의 문자로 이루어져 있다고 가정합니다.함수는 다음 두 가지 작업을 순서대로 수행해야 합니다.첫째, 배열을 알파벳 순서(사전순)로 정렬합니다.둘째, 정렬된 배열을 2차원 형태로 보았을 때 왼쪽 상단 모서리에서 시작하는 주대각선(principal diagonal)에 위치한 문자들을 이어 붙인 문자열을 반환합니다.예를 들어 4개의 문자열이 있다면 각 문자열은 4글자씩 가지므로 4×4 행렬처럼 배치할 수