이 글에서는 숫자 n을 입력받아, 영어 소문자 알파벳 26개(a~z)로만 구성된 길이 n짜리 랜덤 문자열을 반환하는 JavaScript 함수를 작성하는 방법을 알아보겠습니다.구현 아이디어핵심 원리는 간단합니다. 반복문 안에서 Math.random()으로 0부터 25 사이의 임의의 정수를 만들고, 아스키(ASCII) 코드를 활용해 해당 숫자를 알파벳 문자로 변환하는 것입니다. 알파벳 a의 아스키 코드는 97이므로, String.fromCharCode(97 + 임의의 수)를 사용하면 a부터 z까지의 문자를 손쉽게 얻을 수 있습니다.예제
숫자 배열에서 인접한 두 숫자가 오름차순으로 연속되어 등장하지 않는다면(여기서는 오름차순 경우만 고려합니다), 그 배열은 100% 셔플된 상태라고 볼 수 있습니다. 반대로 모든 인접 쌍이 연속된 숫자로 이루어져 있다면 셔플 강도는 0%가 됩니다.길이가 n인 배열에는 원래 순서를 유지한 상태에서 n-1개의 인접 요소 쌍이 존재합니다.따라서 우리는 숫자 배열을 입력받아 해당 배열의 셔플 강도를 나타내는 0부터 100 사이의 값을 반환하는 JavaScript 함수를 작성해야 합니다.동작 원리 arr[i+1]인 경우) 해당 쌍은 잘못된 쌍
이번 글에서는 숫자를 하나 입력받아, 그 수보다 큰 값 중에서 처음으로 등장하는 소수(prime number)를 반환하는 자바스크립트 함수를 작성해 보겠습니다.문제 정의예를 들어 입력값이 24라면, 24보다 큰 숫자 중 가장 먼저 만나게 되는 소수는 29입니다.(25는 5×5로 나누어지고, 26과 28은 짝수, 27은 3×9이므로 모두 소수가 아니며, 29가 첫 번째 소수입니다.)접근 방법구현 로직은 매우 간단합니다.입력된 숫자를 1씩 증가시키면서 확인합니다.각 숫자가 소수인지 판별하는 헬퍼 함수 isPrime()을 사용합니다.소수
```html 문제 설명모든 요소가 동일한 값으로 이루어져 있지만 단 하나의 요소만 다른 숫자인 배열이 주어집니다. 이때 유일하게 다른 숫자를 찾아 반환하는 JavaScript 함수를 작성해야 합니다.풀이 접근 방법배열의 길이는 최소 3이라고 가정합니다. 인접한 세 개의 요소를 차례로 비교하면서 어느 요소가 나머지와 다른지 판별하는 방식으로 문제를 해결할 수 있습니다.현재 요소가 이전 요소와 다르고 다음 요소와 같다면 → 이전 요소가 다른 숫자입니다.현재 요소가 앞뒤 요소 모두와 다르다면 → 현재 요소가 다른 숫자입니다.현재 요소가
이번 튜토리얼에서는 첫 번째 인수로 숫자 n, 두 번째 인수로 숫자 배열을 받아서, 배열의 모든 요소로 나누어 떨어지는 가장 작은 n자리 수를 반환하는 JavaScript 함수를 작성해 보겠습니다. 만약 n자리 범위 안에서 조건을 만족하는 수가 존재하지 않는다면, 그 이상의 수 중에서 가장 작은 공배수를 반환하면 됩니다. 문제 이해하기 예를 들어 다음과 같은 배열이 있다고 가정해 봅시다. const arr = [12, 4, 5, 10, 9] 이 배열의 모든 요소를 동시에 나눌 수 있는 가장 작은 수는 180입니다. 따라서 n =
세 변의 길이를 나타내는 숫자 a, b, c를 입력받아, 이 세 변이 직각삼각형을 이루는지 판별하는 JavaScript 함수를 작성해야 합니다. 함수는 직각삼각형인 경우 true, 그렇지 않은 경우 false를 반환해야 합니다.직각삼각형이란?직각삼각형은 세 개의 내각 중 하나가 90도인 삼각형을 말합니다. 그리고 피타고라스 정리에 따르면, 삼각형에서 하나의 각이 90도일 조건은 가장 긴 변(빗변)의 제곱이 나머지 두 변의 제곱의 합과 같다는 것입니다.대표적인 예로 3, 4, 5를 들 수 있습니다.3*3 + 4*4 = 9 + 16 =
수학에서 엄격하게 증가하는 함수(strictly increasing function)란 그래프에 표시되는 값이 끊임없이 증가하기만 하는 함수를 의미합니다. 마찬가지로 엄격하게 감소하는 함수(strictly decreasing function)는 값이 계속해서 감소하기만 하는 함수를 말합니다.이 개념을 배열에 적용해 보겠습니다. 숫자 배열을 인자로 받아, 배열의 요소들이 처음부터 끝까지 한 방향으로만 증가하거나 감소하는 경우 true를 반환하고, 그렇지 않다면 false를 반환하는 자바스크립트 함수를 작성해야 합니다.예제다음은 이를
문장이 부드럽다(smooth)는 것은 무슨 의미일까요? 여기서 말하는 부드러운 문장이란, 문장을 구성하는 각 단어의 첫 글자가 바로 앞 단어의 마지막 글자와 동일한 경우를 뜻합니다. 즉, 단어와 단어가 끊김 없이 자연스럽게 이어지는 문장이라고 할 수 있습니다.예를 들어 다음과 같은 문장을 살펴보겠습니다.this stringt tries sto obe esmooth → 각 단어의 시작 글자가 이전 단어의 끝 글자와 일치하므로 부드러운 문장입니다.this string is not smooth → string의 끝 글자 g와 is의 첫
문제 이해하기숫자 배열을 입력받는 자바스크립트 함수를 작성해야 합니다. 이 함수의 역할은 배열의 요소들을 재배열했을 때 연속된 숫자 시퀀스를 만들 수 있는지 판별하는 것입니다.예를 들어 다음과 같은 배열이 있다고 가정해 보겠습니다.const arr = [3, 1, 4, 2, 5];이 배열에는 1부터 5까지 모든 숫자가 포함되어 있으므로, 정렬하면 [1, 2, 3, 4, 5]가 되어 완벽한 연속 시퀀스를 형성할 수 있습니다. 따라서 출력 결과는 다음과 같아야 합니다.true구현 접근 방식가장 직관적인 방법은 배열을 오름차순으로 정렬한
이번 글에서는 양의 정수를 입력받아 그 수의 덧셈 지속성(additive persistence)을 반환하는 자바스크립트 함수를 작성해 보겠습니다.덧셈 지속성이란?어떤 정수 n의 덧셈 지속성이란, 각 자릿수의 합으로 숫자를 반복해서 대체했을 때, 그 수가 한 자리 숫자가 될 때까지 필요한 반복 횟수를 의미합니다.예시숫자가 다음과 같다고 가정해 봅시다.1679583각 단계마다 자릿수의 합을 구하면 다음과 같습니다.1 + 6 + 7 + 9 + 5 + 8 + 3 = 39 // 1단계 3 + 9 = 12
문자열이 유효한 16진수(hex) 코드라고 판단하려면, 해당 문자열이 숫자 0~9와 알파벳 소문자 a~f 외의 다른 문자를 포함하지 않아야 합니다.예를 들어 다음과 같습니다.3423ad → 유효한 hex 코드4234es → 유효하지 않은 hex 코드 (e와 s 중 s는 허용되지 않음)이번 글에서는 문자열을 인자로 받아 해당 문자열이 유효한 hex 코드인지 판별하는 JavaScript 함수를 작성해 보겠습니다.방법 1: 반복문과 includes() 활용허용되는 문자 목록(legend)을 정의한 후, 문자열의 각 문자가 이 목록에 포함
배열 속 어떤 숫자가 자신보다 오른쪽에 있는 모든 요소보다 클 때, 그런 요소들만 골라내야 하는 경우가 있습니다. 이번 글에서는 JavaScript 함수를 작성해 원본 배열에서 이 조건을 만족하는 요소들만 담은 새 배열을 반환하는 방법을 알아보겠습니다.문제 정의예를 들어 다음과 같은 배열이 있다고 가정해 보겠습니다.const arr = [12, 45, 6, 4, 23, 23, 21, 1];이 배열에서 각 요소를 기준으로 오른쪽에 있는 모든 값과 비교할 때, 자신보다 큰 값이 하나도 없는 요소만 추출하면 됩니다. 위 배열의 경우 결과
이번 글에서는 첫 번째 인수로 문자열을, 두 번째 인수로 숫자 n, 세 번째 인수로 문자 c를 받는 JavaScript 함수를 작성해 보겠습니다. 이 함수는 문자열에 등장하는 모든 문자의 n번째 출현을 세 번째 인수로 전달받은 문자로 교체한 새 문자열을 반환해야 합니다. 예를 들어 This is a sample string에서 각 문자의 두 번째 출현을 *로 바꾸면 결과는 This ***a s*mple string이 됩니다. 두 번째로 등장하는 i, s, 공백, a가 모두 *로 대체되는 것을 확인할 수 있습니다. 접근 방식 문자열
숫자를 다룰 때 각 자릿수의 값을 분리하여 표현하는 확장 형태(expanded form)를 문자열로 만들어야 하는 경우가 있습니다. 예를 들어 숫자 124가 주어졌을 때, 이 숫자를 입력받아 아래와 같은 확장 형태의 문자열을 반환하는 함수를 작성한다고 가정해 보겠습니다.100+20+4즉, 각 자릿수에 해당하는 자릿값(place value)을 계산한 뒤, 덧셈 기호(+)로 연결하면 됩니다. 백의 자리는 1×10² = 100, 십의 자리는 2×10¹ = 20, 일의 자리는 4×10⁰ = 4가 되는 원리입니다.구현 코드다음은 위 로직을
문제 개요소문자 문자열을 입력받아 새로운 문자열을 반환하는 JavaScript 함수를 작성해야 합니다. 변환 규칙은 다음과 같습니다.[a, m] 범위에 속하는 모든 알파벳은 0으로 변환합니다.[n, z] 범위에 속하는 모든 알파벳은 1로 변환합니다.공백이나 특수 문자와 같은 알파벳이 아닌 문자는 원본 그대로 유지합니다.예를 들어 h는 a~m 사이에 있으므로 0이 되고, w는 n~z 사이에 있으므로 1이 됩니다.구현 코드다음은 위 문제를 해결하는 전체 코드입니다 −const str = 'Hello worlld how
문제 개요양수와 음수가 섞여 있는 배열이 주어졌을 때, 모든 요소를 절댓값으로 변환한 뒤 합산한 값을 반환하는 JavaScript 함수를 작성해야 합니다. 단, Math.abs() 같은 내장 라이브러리 함수의 도움 없이 순수하게 직접 구현해야 한다는 조건이 있습니다.입력 예시다음과 같은 배열이 있다고 가정해 보겠습니다.const arr = [1, -5, -34, -5, 2, 5, 6];기대 출력위 배열의 각 요소 절댓값은 1, 5, 34, 5, 2, 5, 6이며, 이를 모두 더한 값은 다음과 같습니다.58구현 코드핵심 아이디어는 간
이번 튜토리얼에서는 문자열을 입력받아 영어 알파벳으로 이루어진 모든 글자를 그 다음 글자로 변경하는 자바스크립트 함수를 작성해 보겠습니다.예를 들어, 입력 문자열이 다음과 같다면 −const str = how are you;기대되는 출력 결과는 다음과 같습니다 −const output = ipx bsf zpv;동작 원리핵심 아이디어는 간단합니다. 문자열을 한 글자씩 순회하면서 각 문자의 유니코드 코드 값을 확인하고, 알파벳이라면 코드 값에 1을 더한 새로운 문자로 교체하면 됩니다. 다만 구현 시 두 가지 예외
문자열과 숫자 n을 입력받아, 원본 문자열의 모든 글자를 n번씩 반복한 새로운 문자열을 반환하는 자바스크립트 함수를 작성해야 합니다. 문제 이해하기 예를 들어, 입력 문자열이 다음과 같다고 가정해 보겠습니다. const str = how are you 여기서 n 값이 2라면, 최종 출력 결과는 아래와 같아야 합니다. const output = hhooww aarree yyoouu 즉, 공백을 포함한 모든 문자가 각각 두 번씩 반복됩니다. 구현 예제 다음은 위 문제를 해결하는 전체 코드입니다. const str = how are
문제 개요길이가 m인 문자열에 영어 알파벳의 첫 m개 문자가 순서와 관계없이 들어 있다고 가정해 보겠습니다. 그런데 어떤 이유에서인지 문자열에서 한 글자가 사라졌습니다. 즉, 현재 문자열에는 m-1개의 문자만 남아 있는 상태입니다.이번 글에서는 이렇게 불완전해진 문자열을 입력받아 누락된 문자를 찾아 반환하는 함수를 JavaScript로 작성해 보겠습니다.예시 코드다음은 누락된 문자를 찾는 함수의 구현 예시입니다.const str = acdghfbekj;const missingCharacter = str => { &nb
이번 글에서는 숫자 배열을 입력받아 짝수를 오름차순으로 먼저 정렬하고, 이어서 홀수를 오름차순으로 정렬하는 JavaScript 함수를 작성해 보겠습니다.예를 들어, 입력 배열이 다음과 같다면 −const arr = [2, 5, 2, 6, 7, 1, 8, 9];기대하는 출력 결과는 다음과 같습니다 −const output = [2, 2, 6, 8, 1, 5, 7, 9];구현 코드다음은 위 조건을 만족하도록 구현한 코드입니다 −const arr = [2, 5, 2, 6, 7, 1, 8, 9]; const