문제 상황배열을 인자로 받아 또 다른 함수를 반환하는 JavaScript 함수를 작성해야 합니다. 반환된 함수는 숫자를 하나 더 인자로 받으며, 최종적으로 첫 번째 함수에 전달된 배열의 각 요소와 두 번째 함수에 전달된 숫자를 곱한 값들로 이루어진 새로운 배열을 반환합니다.이처럼 함수가 여러 개의 인자를 한 번에 받지 않고, 하나씩 순차적으로 받는 여러 단계의 함수로 분리되는 패턴을 함수형 프로그래밍에서는 커링(Currying)이라고 부릅니다.예제 코드다음은 화살표 함수를 연결한 형태로 구현한 코드입니다.const arr = [2,
문제 설명숫자 n을 입력받는 자바스크립트 함수를 작성해야 합니다. 이 함수는 입력받은 숫자의 각 자릿수를 내림차순으로 재배열하여, 만들 수 있는 가장 큰 숫자를 반환해야 합니다.해결 접근 방법이 문제는 다음과 같은 단계로 해결할 수 있습니다.숫자를 문자열로 변환합니다.문자열을 한 글자씩 분리하여 배열로 만듭니다.배열을 내림차순으로 정렬합니다.정렬된 배열을 다시 하나의 문자열로 합친 뒤 숫자로 변환하여 반환합니다.예제 코드const num = 5423267;const arrangeInDescending = (num = 1) =>
문제 설명문자열 str을 매개변수로 받아 처리하는 JavaScript 함수를 작성해야 합니다. 이 함수는 입력 문자열로 만들 수 있는 모든 순열(permutation)을 생성하되, 중복되는 결과가 있다면 반드시 제거해야 합니다.즉, 문자열을 구성하는 모든 문자를 가능한 모든 순서로 재배치하여, 서로 겹치지 않는 고유한 조합들만 반환하는 것입니다.예제 코드다음은 이 문제를 해결하는 전체 코드입니다. { if (!!str.length && str.length < 2){ return str } cons
문제문자열을 입력받아 해당 문자열에 포함된 모든 점(.)을 대시(-)로 교체하는 JavaScript 함수를 작성해야 합니다.입력const str = this.is.an.example.string;출력const output = this-is-an-example-string;즉, 문자열 str에 등장하는 모든 점(.)이 대시(-)로 대체되어야 합니다.예제 코드다음은 반복문을 사용한 구현 예시입니다.const str = this.is.an.example.string;const replaceDots = (str = ) => {&nbs
문제 정의중첩된(nested) 배열을 입력받아, 배열 안에 포함된 모든 요소의 총 개수, 즉 깊은 카운트(deep count)를 반환하는 JavaScript 함수를 작성해야 합니다. 단순히 최상위 레벨의 요소만 세는 것이 아니라, 여러 겹으로 중첩된 하위 배열의 요소까지 모두 포함하여 개수를 구해야 합니다.입력 예시const arr = [1, 2, [3, 4, [5]]];출력 예시const output = 7;배열을 레벨별로 나누어 살펴보면 다음과 같습니다.레벨 1: 1, 2, [3, 4, [5]] → 3개레벨 2: 3, 4, [5
문제 소개사람의 나이를 년 단위로 입력받으면, 그에 해당하는 고양이 나이(catYears)와 개 나이(dogYears)를 함께 반환하는 자바스크립트 함수를 작성하는 것이 이번 과제입니다.나이 변환 규칙동물의 나이는 사람 나이와 단순히 배수 관계가 아니며, 성장 속도가 초기에 훨씬 빠르다는 점을 반영해 다음과 같은 규칙으로 계산합니다.첫 번째 해: 고양이와 개 모두 15살로 계산합니다.두 번째 해: 각각 9살씩 추가되어, 2살 시점에는 둘 다 24살이 됩니다.세 번째 해부터: 매년 고양이는 4살씩, 개는 5살씩 추가됩니다.입력 및 출
문제 소개이번 글에서는 JavaScript로 숫자 n을 입력받아, 1부터 n까지의 모든 자연수의 합을 반환하는 함수를 작성하는 방법을 알아보겠습니다. 여기서 말하는 합에는 시작 값인 1과 마지막 값인 n 모두 포함됩니다.예를 들어 n이 34라면, 함수는 1 + 2 + 3 + ... + 34의 결과인 595를 반환해야 합니다.해결 방법: 반복문 활용가장 직관적인 방법은 for 반복문을 사용하는 것입니다. 누적 변수를 하나 선언한 뒤, 1부터 n까지 차례대로 더해가면 됩니다.다음은 실제 동작하는 코드입니다.const num = 34;c
문제 소개 유효한 단어들로 이루어진 배열과 하나의 문자열을 입력받아, 해당 문자열이 배열 속 단어들을 조합해 만들어질 수 있는지 판별하는 JavaScript 함수를 작성해 보겠습니다. 입력 const arr = [love, coding, i]; const str = ilovecoding; 출력 const output = true; ilovecoding은 배열 arr의 단어인 i, love, coding을 차례로 이어 붙여 만들 수 있기 때문에 결과는 true입니다. 해결 접근 방식 이 문제는 다음과 같은 순서로 해결할 수 있습니다.
삼각수(Triangular Number)란?삼각수는 점들을 정삼각형 모양으로 배열했을 때 그 삼각형을 가득 채울 수 있는 점의 개수를 의미합니다. 즉, 1부터 n까지의 자연수를 차례대로 더한 값(1, 3, 6, 10, 15, 21 ...)이 바로 삼각수입니다.예를 들어 9는 삼각수입니다. 한 변의 길이가 4인 정삼각형을 만들기 위해 필요한 점의 개수가 정확히 9개이기 때문입니다.문제하나의 숫자를 입력받아, 해당 숫자가 삼각수이면 true를, 그렇지 않으면 false를 반환하는 자바스크립트 함수를 작성해야 합니다.방법 1: 반복문을
문제 개요연비 단위인 갤런당 마일(MPG) 값을 입력받아 이를 리터당 킬로미터(KM/L) 값으로 변환하여 반환하는 JavaScript 함수를 작성해야 합니다.이 변환은 미국식 연비 단위와 미터법 연비 단위 사이의 환산에 활용될 수 있으며, 자동차 연비 데이터를 다룰 때 유용하게 사용됩니다.변환 공식MPG를 KM/L로 변환하려면 두 가지 환산 상수가 필요합니다.1갤런 = 4.54609188리터1마일 = 1.609344킬로미터따라서 변환 비율(ratio)은 킬로미터당 마일 환산값 ÷ 갤런당 리터 환산값으로 계산할 수 있습니다.예제 코드
문제 상황 이번 글에서는 문자열을 입력받아 NATO 음성 알파벳(NATO Phonetic Alphabet)으로 변환하는 JavaScript 함수를 작성해 보겠습니다. NATO 음성 알파벳은 무전 통신 등에서 철자를 명확하게 전달하기 위해 사용되는 표준 코드 체계로, 알파벳 26개 글자 각각에 다음과 같은 코드 워드가 대응됩니다. Alfa, Bravo, Charlie, Delta, Echo, Foxtrot, Golf, Hotel, India, Juliett, Kilo, Lima, Mike, November, Oscar, Papa,
문제 정의어느 도시 N의 자동차 등록 시스템은 두 가지 종류의 번호를 부여합니다.고객 ID(Customer ID) — 0부터 17558423까지의 자연수로, 차량 구매자에게 순서대로 할당됩니다. 첫 번째 고객은 ID 0을, 두 번째 고객은 ID 1을 받는 방식입니다.번호판(Number Plate) — 차량에 부여되는 번호로, 시리즈(a부터 z까지의 라틴 소문자 3개)와 일련번호(0부터 9까지의 숫자 3개)로 구성됩니다.예를 들어 aaa001과 같은 형태입니다. 각 번호판은 특정 고객 ID와 연결되어 있으며, 번호판 aaa001은 고
이 글에서는 JavaScript를 사용하여 주어진 범위 안에 있는 모든 자연수의 합을 구하는 방법을 알아보겠습니다. 문제 정의 숫자 두 개로 이루어진 배열을 입력받아, 그 배열이 나타내는 범위 내에 속한 모든 자연수의 합을 계산하는 함수를 작성해야 합니다. 이때 범위의 시작 숫자와 끝 숫자 자체도 합산에 포함되어야 합니다. 예를 들어, 입력 배열이 [4, 67]이라면 함수는 4부터 67까지의 모든 자연수를 더한 값을 반환해야 합니다. 해결 방법 1: 반복문 활용 가장 직관적인 방법은 반복문을 사용하는 것입니다. 범위의 시작 값부터
자바스크립트를 사용하다 보면 문장 내 단어들의 순서를 거꾸로 뒤집어야 하는 경우가 종종 있습니다. 예를 들어 채팅 앱의 텍스트 효과나 알고리즘 문제 풀이 등에서 유용하게 활용할 수 있습니다. 문제 상황 문장을 나타내는 문자열 하나를 입력받아, 해당 문자열에 포함된 단어들의 순서를 반대로 뒤집은 새로운 문자열을 반환하는 함수를 작성해야 합니다. 즉, 마지막 단어가 첫 번째로, 마지막에서 두 번째 단어가 두 번째로 이동하는 식으로 전체 단어 순서를 역순으로 배치하는 것이 목표입니다. 해결 방법 이 문제는 자바스크립트의 기본 배열 메서드
문제 정의숫자 n을 입력받아 처음 n개의 자연수를 담은 배열을 반환하는 JavaScript 함수를 작성해야 합니다. 여기서 중요한 조건은 하나뿐입니다. 배열의 숫자들은 일반적인 오름차순이 아니라 사전순(lexicographical order)으로 정렬되어야 한다는 점입니다.사전순 정렬이란 숫자를 문자열처럼 취급해 비교하는 방식입니다. 즉, 1로 시작하는 모든 숫자(1, 10, 11, 12…)는 2, 3, 4 등으로 시작하는 어떤 숫자보다도 앞에 위치해야 합니다. 마치 사전에서 단어가 글자 순서대로 배치되는 것과 같은 원리입니다.예시
문제 개요문자열 str과 숫자 n을 매개변수로 받아, n의 각 비트 값을 기준으로 주어진 문자열의 알파벳 대소문자를 변환한 새로운 문자열을 반환하는 JavaScript 함수를 작성해야 합니다.숫자 n의 각 비트는 문자열 내 알파벳 문자 하나하나에 어떤 처리를 할지 결정합니다.비트가 1이면: 해당 문자의 대소문자를 반전시킵니다(소문자 → 대문자, 대문자 → 소문자).비트가 0이면: 문자를 그대로 유지합니다.n의 마지막 비트까지 적용한 후에는 다시 첫 번째 비트부터 순환하며 규칙을 이어가고, 최종적으로 완성된 새 문자열을 반환합니다.구
문제 정의첫 번째 인수로 숫자(연중 몇 번째 날인지), 두 번째 인수로 불리언 값(윤년 여부)을 받는 JavaScript 함수를 작성해야 합니다. 두 번째 인수가 true이면 해당 연도는 윤년을 의미하며, 이때 2월은 29일까지 있습니다. 이 정보를 바탕으로 함수는 연중 n번째 날에 해당하는 실제 날짜(월과 일)를 문자열로 반환해야 합니다.예를 들어 윤년의 60번째 날이라면 결과는 Feb, 29가 되어야 합니다. 평년이라면 같은 60번째 날은 Mar, 1에 해당합니다.예제 코드다음은 위 문제를 해결하는 코드입니다.const day
문제배열, 콜백 함수, 그리고 초기값을 인수로 전달받는 자바스크립트 함수를 작성해야 합니다.이 함수는 배열을 순회하면서 값을 계속 누적하고, 최종적으로 누적된 결과값을 반환해야 합니다. 즉, Array.prototype.reduce() 메서드와 동일한 방식으로 동작하도록 직접 구현하는 것이 목표입니다.reduce의 기본 동작 원리는 다음과 같습니다.누산기(accumulator)에 현재 값을 반복적으로 연산하여 저장합니다.초기값이 제공되면 그 값부터 시작하고, 제공되지 않으면 배열의 첫 번째 요소를 초기값으로 사용합니다.예제다음은 이
문제 정의정수 배열 arr을 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다.배열 내 두 인덱스 i와 j가 다음 조건을 만족한다고 가정합니다.i < j, 그리고arr[i] <= arr[j]이러한 조건을 만족하는 모든 인덱스 튜플 (i, j) 중에서, 함수는 j - i의 차이가 가장 큰 값을 반환해야 합니다.예를 들어, 함수에 다음과 같은 입력이 주어졌다고 가정해 보겠습니다.const arr = [6, 0, 8, 2, 1, 5];그렇다면 출력은 다음과 같아야 합니다.const output = 4;
문제 이해숫자 배열 arr을 첫 번째이자 유일한 인수로 받아 처리하는 JavaScript 함수를 작성해야 합니다.입력 배열 arr의 길이는 항상 짝수라고 가정합니다.배열의 요소들을 재배치했을 때 모든 0 <= i < length(arr) / 2 범위에서 arr[2 * i + 1] = 2 * arr[2 * i] 조건을 만족할 수 있는 경우에만 함수는 true를 반환해야 합니다. 다시 말해, 배열의 앞쪽 절반에 있는 각 요소 바로 뒤에는 반드시 그 값의 정확히 2배인 요소가 위치해야 합니다.예를 들어 함수의 입력이 다음과 같