문제 이해하기두 개의 인수를 받는 함수 padString()을 작성해야 합니다. 첫 번째 인수는 문자열이고, 두 번째 인수는 목표 길이를 나타내는 숫자입니다. 문자열의 길이는 항상 목표 길이보다 작거나 같다고 가정합니다.우리가 해야 할 일은 문자열 끝에 임의의 숫자(0~9)를 계속 덧붙여서 문자열의 길이가 정확히 목표 길이와 일치하도록 만든 후, 완성된 새 문자열을 반환하는 것입니다.구현 아이디어이 문제는 재귀(recursion)를 활용하면 매우 깔끔하게 해결할 수 있습니다. 로직은 다음과 같습니다.1. 현재 문자열의 길이가 목표
여러 개의 키를 가진 객체를 입력받아, 그 안에 있는 모든 거짓(falsy) 값들을 대시(-)로 교체하는 함수를 작성해 보겠습니다. 원본 객체를 순회하면서 거짓 값을 가진 키를 찾아내고, 추가적인 메모리를 소비하지 않는(in-place) 방식으로 해당 값을 -로 바꿔주면 됩니다.falsy 값이란?JavaScript에서 조건문이나 논리 부정 연산자(!)를 적용했을 때 false로 평가되는 값은 다음과 같습니다.nullundefined빈 문자열 0, -0NaN따라서 이번 예제에서는 null뿐만 아니라 위에 나열된 모든 falsy 값들이
두 가지 주어진 색상 사이에서 무작위 색상을 생성하는 함수를 작성해야 합니다. 이 문제는 단계별로 나누어 접근하면 훨씬 쉽게 해결할 수 있습니다.문제 해결 접근 방식첫 번째 단계 → 두 숫자 사이에서 무작위 숫자를 생성하는 함수를 작성합니다.두 번째 단계 → 무작위 색상을 생성할 때 16진수 체계를 그대로 사용하지 않고, 각 자리의 16진수 값을 0~15 범위의 10진수 값으로 변환하여 활용합니다.마지막 단계 → 주어진 색상 문자열을 한 글자씩 반복하면서 각 자리마다 무작위 값을 뽑아 새로운 색상 코드를 만듭니다.구현 예제const
길이가 같은 두 개의 배열이 있을 때, 이 두 배열을 하나의 객체로 매핑하는 함수를 작성해야 하는 경우가 자주 있습니다. 이때 첫 번째 배열의 각 요소는 객체의 키(key)가 되고, 두 번째 배열의 대응되는 요소는 그 키에 해당하는 값(value)이 됩니다.reduce()를 활용한 해결 방법가장 깔끔한 접근 방식은 첫 번째 배열에 reduce() 메서드를 사용하면서, 동시에 인덱스를 통해 두 번째 배열의 요소에 접근하는 것입니다. reduce()는 누적기(accumulator)를 활용해 반복적으로 객체를 만들어 나가기 때문에 이런
개요JavaScript에서 다루는 데이터 중에는 문자열 리터럴을 키(key)로 가지고, 각 키의 값(value) 역시 객체로 구성된 형태의 데이터가 자주 등장합니다. 이런 객체의 객체 구조에서는 특정 순서대로 데이터를 정렬해야 할 필요가 생기곤 하는데요, 이번 글에서는 객체의 키를 기준으로 전체 객체를 정렬하는 방법을 알아보겠습니다.먼저 아래와 같이 회사 이름을 키로, 직원 수·가치·CEO 정보를 담은 객체를 값으로 가지는 데이터가 있다고 가정해 보겠습니다.const companies = { landwaves ltd: {em
JavaScript 개발을 하다 보면 객체 배열을 특정 기준에 따라 재정렬해야 하는 경우가 자주 발생합니다. 이번 글에서는 별도의 문자열 배열에 정의된 순서를 참조하여 객체 배열을 정렬하는 방법을 예제와 함께 살펴보겠습니다.문제 상황먼저 다음과 같이 id 속성을 기준으로 정렬된 객체 배열이 있다고 가정해 보겠습니다.const unordered = [{ id: 1, string: sometimes }, { id: 2, string: be }, { id: 3, string: can }, {
데이터를 다루다 보면 여러 개로 흩어져 있는 객체를 하나로 합쳐야 하는 경우가 자주 발생합니다. 이번 글에서는 동일한 id 값을 가진 객체들을 하나의 객체로 묶는 방법을 JavaScript의 reduce() 메서드를 활용해 알아보겠습니다.문제 상황다음과 같은 객체 배열이 있다고 가정해 보겠습니다.const arr = [ {id: 1, h1: Daily tests}, {id: 2, h1: Details}, {id: 1, h2: Daily classes}, {id: 3, h2: Results}, {i
문제 상황0과 1로만 구성된 이진(binary) 문자열을 입력받아, 모든 0은 1로, 모든 1은 0으로 뒤집은 결과를 반환하는 함수를 작성해야 한다고 가정해 보겠습니다. 이러한 연산을 흔히 역연산 또는 비트 반전이라고 부릅니다.구현 아이디어가장 직관적인 접근 방식은 다음 세 단계로 나눌 수 있습니다.split() 메서드로 문자열을 개별 문자 배열로 분리합니다.map()으로 각 문자를 숫자로 변환한 뒤 1 - 숫자를 계산합니다. (0 → 1, 1 → 0)join()으로 다시 하나의 문자열로 합칩니다.예제 코드const num = 11
JavaScript에서 문자열과 배열이 주어졌을 때, 배열의 각 요소가 해당 문자열에 포함되어 있는지 여부를 판별한 결과를 true와 false로만 이루어진 한 줄의 텍스트 문자열로 변환하는 방법을 알아보겠습니다.문제 상황예를 들어, 다음과 같은 문자열과 배열이 있다고 가정해 보겠습니다.const textString = Convert javascript array iteration result into a single line text string. Happy searching!; const keywords = [integer, j
다음과 같은 숫자 배열이 있다고 가정해 보겠습니다.const arr = [12, 19, 5, 7, 9, 11, 21, 4];이 배열을 입력받아, 원본 배열의 모든 요소 뒤에 각 요소의 제곱값을 이어 붙인 새로운 배열을 반환하는 함수를 작성해야 합니다.즉, 결과 배열은 원본 요소들과 그 제곱값들이 순서대로 나열된 형태가 됩니다. 위 예시 배열의 경우 기대되는 출력 결과는 다음과 같습니다.[12, 19, 5, 7, 9, 11, 21, 4, 144, 361, 25, 49, 81, 121, 441, 16]예제 코드이 문제는 Array.pr
숫자 배열과 “odd”(홀수) 또는 “even”(짝수) 두 값 중 하나를 담은 문자열을 인자로 받아, 해당 조건에 일치하는 숫자들만 골라 합계를 구하는 함수를 만들어야 합니다. 만약 조건에 맞는 값이 하나도 없다면 0을 반환해야 합니다. 문제 예시 console.log(conditionalSum([1, 2, 3, 4, 5], "even")); => 6 console.log(conditionalSum([1, 2, 3, 4, 5], "odd"));
배열에 담긴 모든 숫자를 음수로 바꿔야 하는 경우가 종종 있습니다. 예를 들어 다음과 같은 배열이 있다고 가정해 보겠습니다.const arr = [7, 2, 3, 4, 5, 7, 8, 12, -12, 43, 6];우리가 작성해야 할 함수는 위 배열을 입력받아, 모든 요소를 그에 대응하는 음수 값으로 변환한 새로운 배열을 반환하는 것입니다(예: 4 → -4, 6 → -6). 단, 이미 음수인 요소는 원래 값을 그대로 유지해야 합니다.구현 예제이러한 기능은 자바스크립트의 reduce() 메서드를 활용하면 간결하게 구현할 수 있습니다.
이번 글에서는 배열을 입력받아 그 역순 배열을 반환하는 함수를 작성해 보겠습니다. reverse() 같은 내장 메서드 대신 for 루프를 직접 활용해 구현하는 방법을 단계별로 살펴봅니다.예제 배열먼저 다음과 같은 샘플 배열이 있다고 가정해 보겠습니다.const arr = [7, 2, 3, 4, 5, 7, 8, 12, -12, 43, 6];구현 코드핵심 아이디어는 간단합니다. 원본 배열의 복사본을 만든 뒤, 복사본에서 요소를 하나씩 꺼내(pop()) 새로운 배열 끝에 추가하면 자연스럽게 역순 배열이 완성됩니다. { // 원
문자열 리터럴로 이루어진 배열을 받아, 그중 가장 긴 문자열의 인덱스를 반환하는 함수를 작성해야 합니다. 이때 문자열의 길이를 계산할 때는 공백(whitespace)이 차지하는 길이는 제외해야 합니다.또한 두 개 이상의 문자열이 동일한 최대 길이를 가질 경우, 그중 가장 먼저 등장하는 문자열의 인덱스를 반환해야 한다는 조건도 있습니다.문제 해결 접근 방식해결 방법은 다음과 같습니다.먼저 배열을 순회하면서 각 요소를 공백 기준으로 분리(split)한 뒤 다시 하나로 합쳐(join) 실제 길이를 계산합니다. 계산된 길이는 객체에 저장하
JavaScript로 개발하다 보면 날짜 정보를 담은 객체 배열을 정렬해야 하는 경우가 자주 발생합니다. 이번 글에서는 연도(year)를 오름차순으로 정렬하고, 만약 연도가 같다면 월(month) 순서대로 정렬하는 방법을 알아보겠습니다.문제 상황예를 들어 다음과 같은 배열이 있다고 가정해 보겠습니다.const arr = [{ year: 2020, month: January }, { year: 2017, month: March }, { year: 2010, month: January }, {
디지털 루트란 무엇인가?디지털 루트(digital root)는 어떤 양의 정수의 모든 자릿수를 단순히 더한 값을 의미합니다. 예를 들어 13의 디지털 루트는 1 + 3 = 4입니다.정수 배열이 주어졌을 때, 우리는 다음 규칙에 따라 배열을 정렬해야 합니다.숫자 a가 숫자 b보다 앞에 오려면, a의 디지털 루트가 b의 디지털 루트보다 작거나 같아야 합니다.두 숫자의 디지털 루트가 같다면, 일반적인 크기 기준으로 더 작은 숫자가 먼저 와야 합니다.예를 들어 4와 13은 디지털 루트가 같습니다(둘 다 4). 하지만 4 < 13이므로
숫자의 자릿수를 거꾸로 뒤집은 값을 반환하는 Number.prototype.reverse() 함수를 작성해 보겠습니다. 이 문제는 숫자를 배열로 변환하거나 문자열 메서드를 사용하지 않고, 오직 수학적 연산만으로 해결하는 것이 핵심입니다.동작 예시234.reverse() = 432; 6564.reverse() = 4656;이 기능은 재귀(recursion) 방식으로 깔끔하게 구현할 수 있습니다. 매 단계마다 숫자를 10으로 나눈 몫과 나머지를 이용해 마지막 자릿수를 하나씩 분리하고, 이를 결과값에 누적하는 원리입니다. 음수 여부는 별
문제 상황다음과 같은 숫자 배열이 주어졌다고 가정해 보겠습니다.const arr = [12, 54, 6, 23, 87, 4, 545, 7, 65, 18, 87, 8, 76];이 배열에서 최솟값과 최댓값을 각각 추출하여, 인덱스 0에는 최솟값을, 인덱스 1에는 최댓값이 위치한 새로운 배열을 반환하는 함수를 작성해야 합니다.해결 방법: Array.prototype.reduce() 활용reduce() 메서드를 사용하면 배열을 한 번만 순회하면서 최솟값과 최댓값을 동시에 계산할 수 있습니다. 초기 누적값을 [Infinity, -Infini
이번 문제에서는 n개의 요소로 이루어진 배열이 주어지며, 그중 단 2개의 요소만 숫자이고 나머지는 모두 null입니다. 예를 들어 다음과 같은 형태입니다.const arr = [null, null, -1, null, null, null, -3, null, null, null];우리가 작성해야 할 함수는 이러한 배열을 입력받아, 주어진 두 숫자가 속한 등차수열을 완성하는 것입니다. 문제를 더 명확하게 이해하기 위해, null 값을 빈칸이라고 생각해 보세요. 빈칸에 적절한 숫자를 채워 전체 배열이 하나의 등차수열을 이루도록 만드는 것이
예를 들어, 어떤 회사가 일정 기간 동안 매수·매도한 주식에 대한 데이터가 담긴 배열이 있다고 가정해 보겠습니다.const transactions = [ [AAPL, buy, 100], [WMT, sell, 75], [MCD, buy, 125], [GOOG, sell, 10], [AAPL, buy, 100], [AAPL, sell, 100], [AAPL, sell, 20], [DIS, buy, 15], [MCD, buy, 10], [WMT, buy, 50],