양의 정수를 입력받아 해당 숫자의 모든 자릿수를 자릿값(place value) 형태로 담은 배열을 반환하는 함수, 예를 들어 splitNumber()를 작성해야 합니다. 예를 들어 다음과 같습니다. 입력 숫자가 아래와 같다면, const num = 1234; 출력 출력 결과는 다음과 같아야 합니다. const output = [1000, 200, 30, 4]; 이제 이 함수의 코드를 직접 작성해 보겠습니다. 이 문제는 숫자의 각 자릿수를 하나씩 순회하며 처리하기 때문에 재귀(recursion) 접근 방식에 매우 적합합니다. 따라서
이번 글에서는 문자열을 첫 번째이자 유일한 인수로 받아, 해당 문자열에 포함된 고유한 문자들을 키로 하고 각 키의 값을 0으로 초기화한 객체를 생성하는 함수를 작성해 보겠습니다.문제 정의예를 들어 입력 문자열이 다음과 같다고 가정해 봅시다.const str = hello world!;기대 출력 결과위 문자열을 함수에 전달하면 다음과 같은 객체가 반환되어야 합니다.const obj = { h: 0, e: 0, l: 0, o: 0, : 0, w: 0, r: 0, d: 0, !: 0 };여기서 주목할 점은 중복된 문자(예: l이 세 번
배열을 입력받아 그 안에서 첫 번째 비연속(nonconsecutive) 숫자의 인덱스를 반환하는 함수를 작성해야 합니다.여기서 배열의 모든 숫자는 공차가 1인 등차수열을 이룬다고 가정합니다. 하지만 이 규칙을 어기는 숫자가 있다면, 해당 숫자의 인덱스를 반환해야 합니다. 만약 모든 숫자가 완벽하게 연속된 순서라면 -1을 반환하면 됩니다.문제 접근 방법이 문제는 배열을 처음부터 끝까지 순회하면서 인접한 두 요소의 차이가 1이 아닌 지점을 찾으면 됩니다. 조건에 맞는 지점을 발견하는 즉시 해당 인덱스를 반환하고, 끝까지 규칙이 유지된다
문제 소개문자열을 입력받아, 글자 수가 짝수인 단어만 골라 반전(reverse)시키는 자바스크립트 함수를 작성해 보겠습니다. 홀수 길이의 단어는 원래 상태 그대로 유지됩니다.예를 들어 다음과 같은 문자열이 있다고 가정해 봅시다.const str = This is an example string;각 단어의 길이를 살펴보면 다음과 같습니다.This → 4글자 (짝수)is → 2글자 (짝수)an → 2글자 (짝수)example → 7글자 (홀수)string → 6글자 (짝수)따라서 반전해야 할 대상은 This, is, an, string
개요JavaScript에서 두 문자열을 받아 같은 위치에 있는 문자들끼리 서로 다른 개수(차이점)를 계산하는 함수를 작성해야 하는 경우가 있습니다. 위치가 대응되는 두 문자가 서로 같지 않다면, 그 지점은 하나의 차이점으로 간주됩니다.예를 들어 첫 번째 문자열의 5번째 글자와 두 번째 문자열의 5번째 글자가 다르다면, 이는 하나의 불일치로 카운트됩니다.문자열 예시다음과 같은 두 개의 문자열이 있다고 가정해 보겠습니다.const str1 = Hello world!!!;const str2 = Hellp world111;이 두 문자열을
암스트롱 수란 무엇인가?암스트롱 수(Armstrong Number)는 각 자릿수를 자릿수의 개수만큼 거듭제곱한 값들을 모두 더했을 때, 그 합이 원래 수와 같아지는 수를 말합니다. 수식으로 표현하면 다음과 같습니다.xy…z = xn + yn + … + zn (n은 해당 숫자의 자릿수)예시153은 세 자리 수이며, 아래 조건을 만족하기 때문에 암스트롱 수입니다.1³ + 5³ + 3³ = 1 + 125 + 27 = 153문제 요구사항두 개의 숫자, 즉 범위의 시작값과 끝값을 입력받아 그 사이에 존재하는 모든 암스트롱 수를 배열로 반환하
배열 안에 같은 값이 여러 번 반복해서 등장하는 경우가 종종 있습니다. 예를 들어 다음과 같은 숫자 배열을 살펴보겠습니다.const arr = [1, 4, 3, 3, 1, 3, 2, 4, 2, 1, 4, 4];이 배열에는 1이 세 번, 4가 네 번, 3이 세 번, 2가 두 번씩 등장합니다. 여기서 만들고자 하는 JavaScript 함수는 이 배열에서 두 번 이상 나타난 값(중복 값)만 골라내고, 각 값을 딱 한 번만 결과에 포함하는 것입니다.따라서 위 배열에 대한 기대 출력은 다음과 같습니다.const output = [1, 4,
행렬 전치(Transpose)란?행렬(2차원 배열)의 전치(transpose)는 원본 행렬을 뒤집은 형태를 말합니다. 즉, 행렬의 행(row)과 열(column)을 서로 맞바꾸면 전치된 행렬을 얻을 수 있습니다.예를 들어, 첫 번째 행이 [1, 1, 1]이었던 행렬을 전치하면 첫 번째 열이 [1, 1, 1]이 되는 식입니다. 이 과정은 대각선을 기준으로 요소들을 뒤집는 것과 같습니다.동작 원리가장 효율적인 방법은 새로운 배열을 만들지 않고 제자리(in-place)에서 요소를 교환(swap)하는 것입니다. 인덱스 i와 j에 대해 ar
```html 문제 소개 두 개의 2차원 배열을 인자로 받아, 두 배열이 서로 같은지 여부에 따라 불리언(true/false) 값을 반환하는 JavaScript 함수를 작성해 보겠습니다. 여기서 말하는 배열의 동등함은 대응되는 요소들이 모두 일치한다는 의미입니다. 배열이 같다고 판단되는 조건 두 배열이 같으려면 먼저 행과 열의 개수가 동일해야 합니다. 그리고 모든 i(0 ≤ i < 행의 개수)와 j(0 ≤ j < 열의 개수)에 대해 arr1[i][j] === arr2[i][j]가 성립해야 합니다. 예제 코드 const
다음과 같은 특수 문자들이 포함된 문자열이 있다고 가정해 보겠습니다.!, , , ,; ,, ., - ,?이번 글에서는 문자열을 입력받아 위 특수 문자들이 몇 번 등장하는지 계산하고, 그 개수를 반환하는 JavaScript 함수를 작성해 보겠습니다.예제 코드구현 코드는 다음과 같습니다.const str = "This, is a-sentence;.Is this a sentence?";const countSpecial = str => { const punct = "
이번 글에서는 숫자로 이루어진 배열을 입력받아 퀵 정렬(Quick Sort) 알고리즘으로 오름차순 정렬하는 자바스크립트 함수를 직접 구현해 보겠습니다.퀵 정렬(Quick Sort)이란?퀵 정렬은 대표적인 분할 정복(Divide and Conquer) 방식의 정렬 알고리즘입니다. 매 단계마다 배열에서 피벗(pivot)이라 불리는 기준 요소를 하나 선택하고, 피벗보다 작은 값은 모두 왼쪽으로, 큰 값은 모두 오른쪽으로 이동시킵니다(내림차순 정렬 시에는 반대). 이후 분할된 각 영역에 대해 같은 과정을 재귀적으로 반복하면 전체 배열이 정
문제 개요JavaScript에서는 문자열에 포함된 모든 공백(whitespace)을 제거한 새로운 문자열을 반환하는 함수를 작성해야 하는 경우가 자주 있습니다. 예를 들어 사용자 입력값을 정리하거나, 데이터를 비교하기 전에 형식을 통일할 때 이런 처리가 유용하게 활용됩니다.반복문을 이용한 기본 구현가장 기본적인 접근 방식은 문자열을 한 글자씩 순회하면서 공백이 아닌 문자만 새로운 문자열에 이어 붙이는 것입니다. 아래 예제 코드를 살펴보겠습니다.const str = "This is an example string from w
이 글에서는 숫자를 입력받아 해당 숫자를 정확히 나누어 떨어지게 하는 모든 소수, 즉 소인수를 배열 형태로 반환하는 JavaScript 함수를 작성해 보겠습니다. 문제 이해하기 예를 들어, 입력값이 105라고 가정해 보겠습니다. 105는 3 × 5 × 7로 분해할 수 있으므로, 기대되는 출력 결과는 다음과 같습니다. const output = [3, 5, 7]; 구현 코드 이를 구현한 전체 코드는 다음과 같습니다. const num = 105; const isPrime = (n) => { &
개요파이썬의 swapcase() 메서드처럼 문자열의 대소문자를 한 번에 뒤집어 주는 기능은 JavaScript에 기본으로 제공되지 않습니다. 이번 글에서는 하나의 문자열을 입력받아, 원본 문자열의 모든 대문자는 소문자로, 모든 소문자는 대문자로 변환한 새로운 문자열을 만들어 반환하는 JavaScript 함수를 직접 작성해 보겠습니다.예를 들어 다음과 같은 문자열이 있다고 가정해 보겠습니다.const str = The Case OF tHis StrinG Will Be FLiPped;기대 출력함수 실행 후 기대되는 결과는 다음과 같습니
두 개의 2차원 숫자 배열(행렬)을 입력받아 행렬 곱셈 결과를 반환하는 JavaScript 함수를 작성해 보겠습니다. 이 글에서는 행렬 곱셈의 기본 원리부터 실제 코드 구현, 그리고 실행 결과까지 단계별로 자세히 살펴봅니다.행렬 곱셈의 기본 규칙행렬 곱셈이 성립하려면 중요한 조건이 하나 있습니다. 바로 첫 번째 행렬의 열(column) 개수와 두 번째 행렬의 행(row) 개수가 같아야 한다는 것입니다.예를 들어, X×Z 크기의 행렬 A와 Z×Y 크기의 행렬 B를 곱하면 그 결과는 X×Y 크기의 행렬이 됩니다. 결과 행렬의 각 요소는
ASCII 코드란?ASCII(American Standard Code for Information Interchange)는 7비트 문자 인코딩 방식으로, 각 비트 조합이 고유한 문자를 나타냅니다. 영어 알파벳의 모든 글자는 각각 고유한 십진수 ASCII 코드 값을 가지고 있습니다.이번 문제에서는 두 개의 문자열을 입력받아 각 문자열의 ASCII 점수(문자열을 구성하는 모든 문자의 ASCII 십진수 값의 합)를 계산한 뒤, 그 차이를 반환하는 함수를 작성해야 합니다.그럼 이 함수의 코드를 작성해 보겠습니다.예제구현 코드는 다음과 같습
JavaScript에서는 깊이 중첩된 배열 안의 모든 값을 하나의 문자열로 합쳐야 하는 경우가 종종 있습니다. 예를 들어, 여러 겹으로 감싸인 배열의 요소들을 공백으로 구분된 하나의 문장처럼 만들고 싶다면 재귀 함수를 활용하면 간단하게 해결할 수 있습니다.이번 글에서는 중첩 배열을 순회하면서 모든 리터럴 값을 이어 붙여 문자열로 변환하는 함수를 작성해 보겠습니다. 조건은 다음과 같습니다.배열 내부에 배열이 또 있다면 그 배열도 끝까지 탐색해야 한다.각 문자열 요소 뒤에는 공백 한 칸을 추가한다.재귀 함수를 이용한 구현핵심 아이디어는
JavaScript를 사용하다 보면 일반 객체(Object)를 Map 자료구조로 변환해야 하는 경우가 종종 있습니다. 예를 들어, 다음과 같이 키-값 쌍으로 이루어진 객체가 있다고 가정해 보겠습니다.const obj = { name: Jai, age: 32, occupation: Software Engineer, address: Dhindosh, Maharashtra, salary: 146000 };객체를 Map으로 변환하는 함수이런 객체를 인자로 받아 Map으로 변환하는 JavaScript 함수를 작성할 수 있습
문제 이해하기숫자 배열을 입력받아 인접한 두 요소씩 곱한 값을 차례대로 더하는 JavaScript 함수를 작성해야 합니다. 즉, 배열의 요소들을 두 개씩 묶어 곱셈을 수행한 뒤, 그 결과값들을 모두 합산하는 방식입니다.예를 들어 다음과 같은 배열이 있다고 가정해 보겠습니다.const arr = [1, 2, 3, 4, 5, 6, 7];이 경우 결과값은 아래와 같은 방식으로 계산됩니다.1*2 + 3*4 + 5*6 + 7= 2 + 12 + 30 + 7따라서 최종 출력값은 다음과 같습니다.51배열의 길이가 홀수일 때는 마지막 요소에 짝이
문자열 안에 한 자리 숫자들이 여러 개 섞여 있을 때, 이 숫자들을 모두 골라내어 합계를 반환하는 JavaScript 함수를 작성해야 합니다.해결 방법가장 기본적인 접근 방식은 문자열을 한 글자씩 분리한 뒤, 각 글자가 숫자인지 확인하고 숫자라면 합산하는 것입니다.예제 코드 { const strArr = str.split(); let res = 0; for(let i = 0; i < strArr.length; i++){ if(+strArr[i]){ res += +strA