이번 글에서는 숫자를 입력받아 그 숫자를 이루는 자릿수 중 서로 다른 두 자릿수 사이의 최대 차이를 반환하는 JavaScript 함수를 작성해 보겠습니다.좀 더 쉽게 설명하면, 숫자를 구성하는 자릿수 중 가장 큰 자릿수와 가장 작은 자릿수의 차이를 계산하여 반환하면 됩니다.예시입력된 숫자가 654646이라고 가정해 보겠습니다.가장 작은 자릿수: 4가장 큰 자릿수: 6따라서 함수가 반환해야 하는 결과값은 6 - 4 = 2입니다.숫자: 654646 최소 자릿수: 4 최대 자릿수: 6 출력 결과: 2구현 방법이 문제는 재귀(Recurs
문제 소개다음과 같이 서로 겹치는 값을 가진 두 개의 배열이 있다고 가정해 보겠습니다.const arr1 = [2, 4, 5, 3, 7, 8, 9]; const arr2 = [1, 4, 5, 2, 3, 7, 6];이 두 배열을 입력받아 하나로 합치되, 동일한 값이 여러 번 등장하지 않도록 중복을 제거한 새로운 배열을 반환하는 JavaScript 함수를 작성해야 합니다. 즉, 각 요소는 결과 배열에 정확히 한 번만 나타나야 합니다.includes()를 활용한 구현가장 기본적인 접근 방식은 결과 배열에 해당 값이 이미 존재하는지 inc
회문 배열이란?배열의 요소를 앞에서 읽으나 뒤에서 읽으나 순서가 동일한 배열을 회문(palindrome) 배열이라고 합니다. 이 글에서는 리터럴 값으로 이루어진 배열을 입력받아 해당 배열이 회문 배열인지 판별하는 자바스크립트 함수를 작성해 보겠습니다.대표적인 회문 배열의 예는 다음과 같습니다.const arr1 = [a, b, c, b, a]; const arr2 = [4, 7, 7, 4]; const arr3 = [7, 7, 7, 7, 7, 7];arr1은 어느 방향에서 읽어도 a, b, c, b, a 순서가 그대로이며, arr2
JavaScript에서 두 개의 숫자, 예를 들어 m과 k를 입력받아 크기가 k인 배열을 반환하되, 배열의 모든 요소를 더했을 때 그 합이 정확히 m이 되도록 하는 함수를 작성해야 합니다.가장 간단하고 직관적인 접근 방식은 목표 합계를 배열의 길이로 나눈 값을 모든 요소에 균등하게 배분하는 것입니다. 이렇게 하면 각 요소가 동일한 값을 가지게 되고, 전체 합은 자연스럽게 m과 일치하게 됩니다.예제 코드해당 기능을 구현한 코드는 다음과 같습니다 −const len = 30; const sum = 121; const spli
버블 정렬은 가장 기본적인 정렬 알고리즘 중 하나로, 인접한 두 요소를 반복적으로 비교하면서 순서가 잘못된 경우 서로 교환(swap)하는 방식으로 배열을 오름차순 또는 내림차순으로 정렬합니다.이번 글에서는 리터럴 값으로 이루어진 배열을 입력받아 버블 정렬을 사용해 정렬하는 JavaScript 함수를 작성해 보겠습니다.구현 코드먼저 두 요소의 위치를 바꾸는 swap 헬퍼 함수를 만들고, 이를 활용해 bubbleSort 함수를 구현합니다.= 0; j--) { if (items[j] < items[j - 1])
중첩된 배열 안에 숫자뿐만 아니라 falsy 값(0 포함)이나 문자열까지 섞여 있는 경우가 있습니다. 이럴 때 배열에 포함된 숫자 값들만 곱한 결과를 반환하는 JavaScript 함수를 작성해 보겠습니다. 만약 배열에 0이 포함되어 있다면, 0 역시 계산에서 제외해야 합니다.문제 접근 방식배열이 여러 겹으로 중첩되어 있기 때문에, 각 요소를 순회하면서 해당 요소가 배열인지 확인하고, 배열이라면 다시 같은 로직을 재귀적으로 호출하는 방식이 가장 효율적입니다. 또한 falsy 값(null, undefined, false, 0 등)은 논
문제 소개자바스크립트에서 배열을 입력받아 그중 두 번째로 많이 등장하는 요소를 반환하는 함수를 작성해 보겠습니다. 이 문제는 각 요소의 출현 빈도를 계산한 뒤, 빈도수를 기준으로 정렬하여 두 번째 값을 추출하는 방식으로 해결할 수 있습니다.해결 접근 방법reduce() 메서드와 Map 객체를 활용해 배열 내 각 요소의 출현 횟수를 집계합니다.Array.from()으로 Map 객체를 [요소, 빈도] 형태의 배열로 변환합니다.빈도수를 기준으로 내림차순 정렬한 뒤, 인덱스 1에 해당하는 요소를 반환합니다.코드 구현const arr = [
JavaScript에서 문자열과 숫자 n(n은 문자열 전체 길이를 정확히 나눌 수 있는 값)을 입력받아, 해당 문자열을 n개의 동일한 길이의 조각으로 나눈 뒤 그 결과를 배열로 반환하는 함수를 작성해야 하는 경우가 있습니다. 예를 들어 길이가 48인 문자열을 6개 조각으로 나눈다면, 각 조각의 길이는 정확히 8자가 되어야 합니다. 예제 코드 다음은 reduce 메서드를 활용하여 문자열을 균등하게 분할하는 함수입니다. const str = we will be splitting this string into parts; const nu
JavaScript에서 두 배열이 완전히 같은지 확인하는 것은 생각보다 간단하지 않습니다. === 연산자는 참조 타입인 배열을 비교할 때 값이 아닌 메모리 주소를 기준으로 판단하기 때문에, 내용이 완전히 동일한 두 배열이라도 서로 다른 객체로 취급됩니다.따라서 우리는 두 개의 리터럴 배열을 인수로 받아, 각 위치에 있는 대응 요소들을 하나씩 검사하는 함수를 직접 작성해야 합니다. 이 함수는 모든 대응 요소가 서로 같으면 true를 반환하고, 하나라도 다르면 false를 반환해야 합니다.구현 방법동등성 검사 로직은 다음과 같은 단계로
이번 글에서는 숫자로 이루어진 배열을 인자로 받아, 가장 작은 값과 가장 큰 값을 제외한 나머지 요소들의 평균을 반환하는 자바스크립트 함수를 작성해 보겠습니다.접근 방법배열을 여러 번 순회하는 대신 reduce() 메서드를 활용하면 단 한 번의 순회로 다음 세 가지 값을 동시에 계산할 수 있습니다.sum: 배열 요소들의 총합max: 배열 내 최댓값min: 배열 내 최솟값순회가 끝난 뒤 총합에서 최댓값과 최솟값을 차례로 빼고, 그 결과를 (배열 길이 − 2)로 나누면 원하는 평균을 얻을 수 있습니다.예제 코드const arr = [5
이번 글에서는 숫자 배열을 인자로 받아, 인덱스가 n의 배수인 위치에 있는 요소들을 모두 더한 누적 합계를 반환하는 JavaScript 함수를 작성해 보겠습니다.문제 이해하기예를 들어 n이 3이라면, 인덱스 0, 3, 6, 9처럼 3의 배수에 해당하는 인덱스에 위치한 요소들만 골라서 그 합을 구해야 합니다. 이런 문제는 나머지 연산자(%)를 활용하면 간단하게 해결할 수 있습니다.예시 코드구현 코드는 다음과 같습니다.const arr = [5, 3, 5, 6, 12, 5, 65, 3, 2];const num = 3;const nthS
완전 제곱수란 무엇인가?어떤 정수가 다른 정수의 제곱으로 표현될 수 있을 때, 그 수를 완전 제곱수(Perfect Square)라고 합니다. 예를 들어 144는 12 × 12, 484는 22 × 22로 표현할 수 있으므로 완전 제곱수에 해당합니다.이번 글에서는 숫자 하나를 인수로 받아, 해당 숫자가 완전 제곱수인지 여부에 따라 불리언(Boolean) 값인 true 또는 false를 반환하는 자바스크립트 함수를 작성하는 방법을 알아보겠습니다.대표적인 완전 제곱수의 예는 다음과 같습니다.144, 196, 121, 81, 484반복문을
문제 정의JavaScript에서 두 개의 문자열을 인자로 받아, 두 번째 문자열을 첫 번째 문자열 뒤에 이어 붙이는 함수를 작성해야 합니다. 다만 한 가지 조건이 있습니다. 첫 번째 문자열의 마지막 문자와 두 번째 문자열의 첫 번째 문자가 동일하다면, 중복되는 문자 하나를 제거한 상태로 연결해야 합니다.예를 들어 Food와 dog를 단순히 붙이면 Fooddog이 되지만, 경계에서 d가 겹치므로 스마트한 연결 결과는 Foodog가 되어야 합니다.구현 예제const str1 = Food; const str2 = dog; const c
이번 글에서는 문자열과 숫자 k를 입력받아, 해당 문자열에서 처음 k개의 문자를 제거한 새로운 문자열을 반환하는 JavaScript 함수를 작성해 보겠습니다.예를 들어, 원본 문자열이 다음과 같다고 가정해 봅시다.const str = this is a string여기서 n = 4라면,n = 4출력 결과는 다음과 같아야 합니다.const output = is a string예제 코드위 요구 사항을 구현한 코드는 다음과 같습니다.const str = this is a string; const removeN = (str, num) =&
문제 정의두 개의 숫자 a와 b를 인자로 받아, 두 숫자 사이(경계값 포함)에 존재하는 소수의 총 개수를 반환하는 JavaScript 함수를 작성해야 합니다.예를 들어, a = 21이고 b = 38이라고 가정해 보겠습니다.두 수 사이의 소수는 23, 29, 31, 37입니다.소수의 개수는 4개입니다.따라서 우리가 만들 함수는 4를 반환해야 합니다.구현 코드먼저 특정 숫자가 소수인지 판별하는 isPrime 헬퍼 함수를 만들고, 이를 활용해 주어진 범위 내의 모든 숫자를 검사하는 primeBetween 함수를 작성합니다.const is
JavaScript 프로그래밍에서는 중복된 요소가 포함된 숫자 배열을 다루다 보면, 같은 값을 가진 요소들을 하나로 합산해야 하는 경우가 자주 발생합니다. 예를 들어 [1, 3, 1] 배열에서 1이 두 번 등장한다면, 이를 2라는 단일 값으로 합치는 것이 목표입니다.접근 방식이 문제를 효율적으로 해결하려면 Map 객체와 reduce() 메서드를 조합하는 것이 좋습니다. 먼저 각 값이 몇 번 등장했는지 빈도수를 계산한 뒤, 고유한 값에 등장 횟수를 곱하면 해당 값들의 합계를 구할 수 있습니다.구현 코드const input = [1,
문제 이해하기음수 정수 하나를 입력받아 그 숫자의 각 자릿수 합을 반환하는 JavaScript 함수를 작성해야 합니다. 여기서 핵심은 마이너스(-) 기호 바로 뒤에 오는 첫 번째 자릿수가 음수로 취급된다는 점입니다.예를 들어 입력값이 다음과 같다면 −-5456출력 결과첫 자릿수인 5는 음수로 계산되므로, 출력은 다음과 같습니다 −(-5) + 4 + 5 + 610예제 코드이 문제를 해결하는 코드는 다음과 같습니다 −const num = -5456;const sumNum = num => { 
JavaScript 개발을 하다 보면 문자열 값과 null, undefined, 0, 빈 문자열 같은 거짓값(falsy)이 뒤섞인 배열을 다루는 경우가 종종 있습니다.이럴 때 배열의 모든 값을 하나의 문자열로 이어 붙이되, 거짓값은 자동으로 제외하는 함수를 작성하는 방법을 알아보겠습니다.JavaScript의 거짓값(Falsy)이란?JavaScript에서 다음 값들은 불리언 문맥에서 false로 평가됩니다.falsenullundefined0, -0, NaN빈 문자열 예제 코드 { return acc + (val || )
문자열 배열을 입력받아, 첫 글자가 서로 같은 문자열이 여러 개 있을 경우 각 글자마다 하나의 문자열만 남기고 나머지는 모두 삭제하는 JavaScript 함수를 작성해야 합니다.예를 들어 다음과 같은 배열이 있다고 가정해 보겠습니다.const arr = [Apple, Jack, Army, Car, Jason];여기서 Apple과 Army는 모두 A로 시작하고, Jack과 Jason은 모두 J로 시작합니다. 따라서 각 쌍에서 하나씩 골라 삭제하여, 배열에는 시작 글자가 서로 다른 문자열만 남도록 만들어야 합니다.구현 예제이 문제를 해
두 개의 숫자 m과 n을 입력받아, 합이 n이 되고 곱이 m이 되는 두 숫자를 반환하는 JavaScript 함수를 작성해 보겠습니다. 만약 조건을 만족하는 숫자 쌍이 존재하지 않는다면 함수는 false를 반환해야 합니다.문제 접근 방법가장 직관적인 풀이는 완전 탐색(Brute Force)입니다. 두 수의 합을 sum, 곱을 prod라고 할 때, 한쪽 숫자를 i로 정하면 나머지 하나는 자동으로 sum - i로 결정됩니다. 따라서 i를 0부터 sum / 2까지 순회하면서 i * (sum - i)가 prod와 일치하는지만 확인하면 됩니다