JavaScript로 배열을 다루다 보면 특정 조건을 만족하는 요소를 찾아야 하는 경우가 자주 있습니다. 이번 글에서는 중복된 문자가 하나도 없는 문자열, 즉 모든 문자가 고유한 첫 번째 문자열을 배열에서 찾는 방법을 알아보겠습니다.문제 상황다음과 같이 문자열들이 담긴 배열이 있다고 가정해 보겠습니다.const arr = [54gdgdfe3, 434ffd, 43frdf, 43fdhnh, wgcxhjny, fsdf34];여기서 우리가 작성해야 할 함수의 요구 사항은 다음과 같습니다.배열을 순서대로 확인하면서 중복 문자가 전혀 없는 첫
문제 개요두 개의 숫자, 예를 들어 a와 b를 입력받아 두 수 사이에 존재하는 모든 소수를 찾고, 그 합계를 구하는 JavaScript 함수를 작성해 보겠습니다. 만약 a와 b 자체가 소수라면 이들 역시 계산에 포함해야 합니다.이 문제는 크게 두 단계로 나누어 해결할 수 있습니다.1단계: 소수 판별 함수 만들기먼저 임의의 숫자가 소수인지 아닌지를 판별하는 isPrime 함수가 필요합니다. 1은 소수가 아니며, 2는 유일한 짝수 소수입니다. 그 외의 숫자는 2부터 자기 자신보다 작은 수까지 차례대로 나누어 떨어지는지 검사하면 됩니다.
이번 글에서는 두 개의 숫자 a와 b를 입력받아 두 숫자 사이의 자릿수 거리(digit distance)를 반환하는 JavaScript 함수를 작성해 보겠습니다.자릿수 거리란?두 숫자의 자릿수 거리는 각 자리에 해당하는 숫자들끼리의 차이를 절댓값으로 구한 뒤, 이를 모두 더한 값입니다.예를 들어 다음과 같은 두 숫자가 있다고 가정해 보겠습니다.345 678이 경우 자릿수 거리는 다음과 같이 계산됩니다.|3-6| + |4-7| + |5-8| = 3 + 3 + 3 = 9구현 방법두 숫자를 문자열로 변환한 후, 각 자리의 숫자를 하나씩
문제 상황 다음과 같이 배열 안에 배열이 중첩된 2차원 배열이 주어져 있다고 가정해 보겠습니다. const arr = [[12, 56], [3, 45], [23, 2], [2, 6], [2, 8]]; 바깥 배열의 길이에는 제한이 없지만, 각 하위 배열에는 반드시 두 개의 숫자만 포함되어야 한다는 점에 유의해야 합니다. 하위 배열의 두 숫자는 하나의 분수를 나타냅니다. 예를 들어 첫 번째 하위 배열 [12, 56]은 분수 12/56을, 두 번째 하위 배열 [3, 45]는 분수 3/45를 의미하는 식입니다. 요구 사항 우리가 작성해야
문제 소개오직 + 또는 - 기호만으로 이루어진 문자열이 주어질 때, 문자열 전체의 중화(neutralisation) 결과를 계산하여 + 또는 -를 반환하는 JavaScript 함수를 작성해야 합니다.중화 규칙은 다음과 같습니다.++ → +-- → +-+ 또는 +- → -즉, 같은 기호가 만나면 +가 되고, 서로 다른 기호가 만나면 -가 됩니다. 곱셈 부호 규칙과 유사하게 동작한다고 생각하면 이해하기 쉽습니다.예시 문자열const str = +++-+-++---+-+--+-;구현 코드다음은 split()과 reduce() 메서드를 활
문장 문자열과 하나의 문자를 매개변수로 받아, 해당 문자로 시작하는 모든 단어만 뒤집는 JavaScript 함수를 작성해야 합니다.문제 이해하기예를 들어, 다음과 같은 문자열이 있다고 가정해 보겠습니다.const str = hello world, how are you;특정 문자 h로 시작하는 단어를 뒤집는다면,출력 문자열은 다음과 같아야 합니다.const output = olleh world, woh are you;즉, h로 시작하는 단어인 hello와 how만 뒤집고, 나머지 단어들은 원래 그대로 유지하는 것입니다.구현 코드다음은
이번 튜토리얼에서는 문자열을 입력받아 홀수 개의 문자로 이루어진 단어만 골라 뒤집는 JavaScript 함수를 작성해 보겠습니다.여기서 말하는 단어란 다음 조건 중 하나를 만족하는 부분 문자열을 의미합니다.양쪽이 공백으로 둘러싸여 있는 경우문자열의 시작 또는 끝에 위치하면서, 반대쪽이 공백으로 구분되는 경우문제 예시다음과 같은 문자열이 있다고 가정해 보겠습니다.const str = hello beautiful people;각 단어의 길이를 살펴보면 다음과 같습니다.hello → 5글자 (홀수)beautiful → 9글자 (홀수)pe
이번 글에서는 두 문자열을 입력받아 같은 위치에 있는 문자 중 서로 다른 것의 개수를 세는 JavaScript 함수를 작성해 보겠습니다.같은 인덱스에 있는 두 문자가 일치하지 않으면, 해당 요소는 서로 다른 것으로 간주됩니다. 예를 들어 다음과 같은 두 문자열이 있다고 가정해 보겠습니다.const str1 = Hello world!!!;const str2 = Hellp world111;위 두 문자열을 비교하면 네 번째 자리의 o와 p, 그리고 마지막 세 글자 !!!와 111이 서로 다르므로, 총 4개의 불일치 지점이 존재합니다.예제
이번 글에서는 문자열을 입력받아, 그 문자열 안에서 가장 먼저 반복해서 등장하는 문자의 인덱스를 반환하는 JavaScript 함수를 작성해 보겠습니다.만약 반복되는 문자가 하나도 없다면 함수는 -1을 반환해야 합니다. 예를 들어 다음과 같은 문자열이 주어졌다고 가정해 봅시다 −const str = Hello world, how are you;위 문자열에서 문자 l은 인덱스 2에서 처음 등장하고 인덱스 3에서 다시 나타나므로, 함수의 반환값은 2가 됩니다.예제 코드다음은 Map 객체를 활용한 전체 코드입니다 −const str = H
스네이크 케이스(snake case)는 문자열의 공백을 언더스코어(_)로 대체하고, 각 단어의 첫 글자를 소문자로 변환하여 표기하는 네이밍 스타일입니다. 예를 들어 This is a simple sentence라는 문장은 this_is_a_simple_sentence처럼 표현됩니다.이번 글에서는 문자열을 인수로 받아 이를 스네이크 케이스로 변환하는 자바스크립트 함수를 작성하는 방법을 살펴보겠습니다.구현 아이디어변환 과정은 크게 세 단계로 나눌 수 있습니다.1. split( ) 메서드로 문자열을 공백 기준으로 분리하여 배열을 만듭니다
길이가 각각 l, m, n인 세 개의 선분이 있다고 가정해 봅시다. 이 세 선분이 삼각형을 이룰 수 있는 조건은 단 하나, 임의의 두 변의 길이 합이 나머지 한 변보다 커야 한다는 것입니다.예를 들어, 세 선분의 길이가 각각 4, 9, 3이라면 삼각형을 만들 수 없습니다. 그 이유는 4 + 3 = 7이 9보다 작기 때문입니다.문제 정의우리는 세 개의 숫자(세 변의 길이)를 인자로 받아, 해당 값들이 삼각형을 형성할 수 있는지 여부를 판별하는 JavaScript 함수를 작성해야 합니다.삼각형 성립 조건삼각형 부등식(Triangle I
문제 개요최소 하나 이상의 모음을 포함하는 문자열이 주어졌을 때, 문자열의 각 문자마다 가장 가까운 모음까지의 거리를 숫자로 매핑한 배열을 반환하는 JavaScript 함수를 작성해야 합니다.예를 들어, 입력 문자열이 다음과 같다면 −const str = vatghvf;출력 결과는 다음과 같아야 합니다.const output = [1, 0, 1, 2, 3, 4, 5];여기서 두 번째 문자 a는 그 자체가 모음이므로 거리가 0이고, 첫 번째 문자 v는 인덱스 1에 있는 a까지의 거리가 1입니다. 나머지 문자들도 마찬가지 방
직렬과 병렬 저항의 기본 공식물리학에서 저항 3개를 직렬(series)로 연결했을 때의 등가저항은 다음과 같이 구합니다.R = R1 + R2 + R3반면 같은 저항들을 병렬(parallel)로 연결했을 때는 다음 관계식이 성립합니다.1/R = (1/R1) + (1/R2) + (1/R3)즉, 병렬 연결에서는 각 저항의 역수를 모두 더한 뒤, 마지막에 다시 역수를 취해야 올바른 등가저항을 얻을 수 있습니다.문제 요구 사항여기서 작성해야 할 JavaScript 함수는 다음 두 가지를 인자로 받습니다.연결 방식: series(직렬) 또는
이번 글에서는 숫자를 인자로 받아 그 숫자 안에서 가장 큰 자릿수를 반환하는 재귀(recursion) 기반의 JavaScript 함수를 작성해 보겠습니다. 예를 들어, 입력값이 다음과 같다면 − 45654356 각 자릿수(4, 5, 6, 5, 4, 3, 5, 6) 중 가장 큰 값은 6이므로, 함수는 6을 반환해야 합니다. 접근 방식 재귀로 이 문제를 해결하는 핵심 아이디어는 다음과 같습니다. 숫자를 10으로 나눈 나머지(% 10)를 이용해 마지막 자릿수를 구합니다. 현재 자릿수와 지금까지 찾은 최대값(greatest)
문제 상황다음과 같은 숫자 배열이 있다고 가정해 보겠습니다.const arr = [3, 5, 5, 2, 23, 4, 7, 8, 8, 9];여기서 우리는 이러한 배열과 하나의 숫자 n(n은 배열 길이보다 작거나 같아야 함)을 입력받아, 배열의 처음 n개 요소만 제자리에서 반전(뒤집기)하는 자바스크립트 함수를 작성해야 합니다. 중요한 점은 나머지 요소들은 원래 순서를 그대로 유지해야 한다는 것입니다.예를 들어, 위 배열에서 n이 4라고 해보겠습니다.const arr = [3, 5, 5, 2, 23, 4, 7, 8, 8, 9];그렇다면
문제 상황다음과 같은 숫자 배열이 있다고 가정해 보겠습니다.const arr = [3, 5, 5, 2, 23, 4, 7, 8, 8, 9];우리는 이 배열과 하나의 숫자 n을 입력받아, n보다 큰 요소의 개수와 n보다 작은 요소의 개수를 각각 담은 객체를 반환하는 JavaScript 함수를 작성해야 합니다.코드 예시reduce() 메서드를 활용하면 배열을 단 한 번의 순회로 처리하면서 두 개수를 동시에 계산할 수 있습니다. 다음은 실제 구현 코드입니다.const arr = [3, 5, 5, 2, 23, 4, 7, 8, 8, 9];co
정돈된 숫자(Tidy Number)란?정돈된 숫자란 각 자릿수가 왼쪽에서 오른쪽으로 갈수록 같거나 커지는 순서, 즉 비내림차순으로 배열된 숫자를 의미합니다. 이 글에서는 숫자를 입력받아 해당 숫자가 정돈된 숫자인지 아닌지를 판별하는 JavaScript 함수를 작성해 보겠습니다.예시489 → 정돈된 숫자입니다 (4 ≤ 8 ≤ 9)234557 → 역시 정돈된 숫자입니다 (2 ≤ 3 ≤ 4 ≤ 5 ≤ 5 ≤ 7)34535 → 정돈된 숫자가 아닙니다 (3 뒤에 5, 다시 3으로 작아짐)구현 코드다음은 재귀(Recursion)를 활용하여 정
이번 글에서는 두 개의 숫자 m과 n을 입력받아, m의 배수 중 첫 n개를 배열로 반환하는 JavaScript 함수를 작성해 보겠습니다.예를 들어, 입력값이 4와 6이라면 함수는 4의 배수 여섯 개를 순서대로 담은 배열을 반환해야 합니다.const output = [4, 8, 12, 16, 20, 24];구현 아이디어가장 직관적인 방법은 반복문을 활용하는 것입니다. 시작값을 m으로 설정하고, 매 반복마다 m씩 값을 증가시키면서 결과 배열에 차례로 추가하면 됩니다. 이렇게 하면 총 n번의 반복으로 정확히 n개의 배수를 얻을 수 있습니
이번 글에서는 임의의 개수의 배열을 인자로 받아, 모든 배열의 값을 하나의 배열에 연결(concatenate)하여 반환하는 JavaScript 함수를 작성하는 방법을 알아보겠습니다.문제 정의예를 들어 입력으로 다음과 같은 배열들이 주어진다면 −[1, 5], [44, 67, 3], [2, 5], [7], [4], [3, 7], [6]함수는 아래와 같이 모든 요소가 순서대로 이어진 단일 배열을 반환해야 합니다 −const output = [1, 5, 44, 67, 3, 2, 5, 7, 4, 3, 7, 6];구현 코드다음은 rest 파라
대문자와 소문자가 섞여 있는 문자열을 입력받아, 모든 대문자를 문자열 앞쪽으로 이동시킨 새로운 문자열을 반환하는 JavaScript 함수를 작성해야 합니다. 이때 중요한 조건은 각 문자들의 상대적인 순서가 그대로 유지되어야 한다는 점입니다.예를 들어, 입력 문자열이 다음과 같다면 −const str = heLLO woRlD;기대하는 출력 결과는 다음과 같습니다 −const output = LLORDhe wol;해결 접근 방식이 문제는 배열의 splice() 메서드를 활용하면 효율적으로 해결할 수 있습니다. 문자