문제 설명최소 5자리 이상으로 구성된 숫자 문자열을 입력받는 JavaScript 함수를 작성해야 합니다. 이 함수는 주어진 숫자 안에서 연속된 5자리 숫자 시퀀스 중 가장 큰 값을 찾아 반환해야 합니다.예를 들어, 123546544라는 문자열이 주어지면 가능한 5자리 조합은 12354, 23546, 35465, 54654, 46544이며, 그중 가장 큰 값인 54654를 반환하면 됩니다.예제 코드다음은 위 문제를 해결하는 코드입니다.const num = 123546544;const findGreatestFiveDigit = (num
문제 소개숫자로 이루어진 배열을 하나 입력받는 JavaScript 함수를 작성해야 합니다. 이 함수는 원본 배열의 요소 중 홀수가 아닌 숫자(짝수)만 골라내어 새로운 배열을 구성한 뒤, 그 배열을 반환하는 역할을 합니다.예를 들어 [5, 32, 67, 23, 55, 44, 23, 12] 같은 배열이 주어졌다면, 결과적으로 [32, 44, 12]를 담은 배열이 출력되어야 합니다.구현 방법가장 기본적인 접근은 반복문을 사용하는 것입니다. 배열을 처음부터 끝까지 순회하면서 각 요소를 2로 나눈 나머지가 1인지 검사하고, 홀수가 아니라면
문제 정의숫자 n을 입력받아, 1로 시작하면서 1과 0이 번갈아 가며 반복되는 길이 n의 문자열을 생성하는 JavaScript 함수를 작성해야 합니다.예를 들어 n이 12라면 함수는 다음과 같은 문자열을 반환해야 합니다.101010101010풀이 방법가장 간단한 접근 방식은 인덱스를 기준으로 판단하는 것입니다. 인덱스가 짝수일 때는 1을, 홀수일 때는 0을 결과 문자열에 추가하면 됩니다. 이렇게 하면 항상 1로 시작하는 교대 패턴의 문자열을 얻을 수 있습니다.구현 코드다음은 위 로직을 구현한 코드입니다.const num = 12;
문제 소개이번 글에서는 Array 클래스의 프로토타입 객체에 직접 정의해서 사용할 수 있는 JavaScript 함수를 만들어 보겠습니다. 이 함수는 콜백 함수를 인자로 받으며, 콜백 함수가 true를 반환하는 첫 번째 요소를 그대로 반환해야 합니다.내장 Array.prototype.find 메서드와 유사하게 동작하며, 콜백 함수에는 현재 요소를 첫 번째 인자로, 현재 인덱스를 두 번째 인자로 전달합니다.구현 예제다음은 실제 구현 코드입니다.const arr = [4, 67, 24, 87, 15, 78, 3]; Array.proto
문제 정의 숫자로 이루어진 배열을 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 배열에서 가장 적은 수의 요소를 제거하여 남은 배열이 오름차순(증가 수열)이 되도록 만들어야 합니다. 접근 방법 기본적인 아이디어는 다음과 같습니다. 원본 배열을 보존하기 위해 배열의 복사본을 만듭니다. 배열을 순회하면서 현재 요소가 바로 다음 요소보다 큰 지점(감소 지점)을 찾아 해당 요소를 제거 대상으로 표시합니다. 마지막으로 표시된(undefined) 요소들을 필터링하여 결과 배열을 반환합니다. 예제 코드 다음은 이를 구
문제 정의문자열 str과 하나의 문자 char를 입력으로 받는 JavaScript 함수를 작성해야 합니다. 함수는 원본 문자열에서 지정한 문자가 등장하는 각 위치의 바로 다음 문자를 찾아, 이들을 하나로 이어 붙인 새로운 문자열을 반환합니다. 만약 해당 문자가 문자열의 마지막에 위치해 다음 문자가 없다면, 그 위치는 자연스럽게 건너뛰게 됩니다.예를 들어 문자열 this is a string에서 문자 i를 찾으면, 각 i 바로 뒤에 오는 문자들은 s, s, n이므로 최종 결과는 ssn이 되어야 합니다.구현 예제다음은 기본적인 for
문제하나의 숫자 n을 매개변수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 두 수의 합이 정확히 n이 되고, 두 수가 모두 소수(prime)인 모든 숫자 쌍을 담은 배열을 반환해야 합니다.예시다음은 전체 코드입니다 −const num = 26; const isPrime = (n) => { if (n % 2 === 0) return false; let sqrtn = Math.sqrt(n)+1; for (let i=3; i < sqrtn;
파도반 수열이란?파도반 수열은 다음과 같은 초기값으로 정의되는 정수 수열 P(n)입니다.P(0) = P(1) = P(2) = 1그리고 다음 점화식을 따릅니다.P(n) = P(n-2) + P(n-3)즉, 각 항은 두 번째 앞 항과 세 번째 앞 항의 합으로 계산됩니다. 파도반 수열의 첫 몇 개 값은 다음과 같습니다.1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 21, 28, 37, 49, 65, 86, 114, 151, 200, 265, …문제 정의숫자 n을 입력받아 파도반 수열의 n번째 항을 반환하는 자바스크립트
문제 정의 중복 없이 고유한 단어들로 구성된 배열을 입력으로 받는 JavaScript 함수를 작성해야 합니다. 이 함수의 역할은 배열 안의 두 단어를 이어 붙였을 때 회문(palindrome), 즉 앞뒤로 읽었을 때 같은 문자열이 되는 모든 인덱스 쌍 [i, j]를 찾아 배열 형태로 반환하는 것입니다. 단, i와 j는 서로 달라야 하며, arr[i] 뒤에 arr[j]를 연결한 결과가 회문일 때 해당 쌍을 결과에 포함합니다. 접근 방법 가장 직관적인 풀이는 브루트포스(완전 탐색)입니다. 가능한 모든 순서쌍 (i, j)에 대해 두 단어
문제 소개숫자로 이루어진 배열을 입력받아, 각 숫자를 이진수로 변환했을 때 포함된 1의 개수를 기준으로 내림차순 정렬하는 JavaScript 함수를 작성하는 것이 목표입니다. 즉, 이진 표현에서 1이 가장 많은 숫자가 배열 맨 앞에 오도록 재정렬한 새로운 배열을 반환해야 합니다.접근 방법이 문제는 두 단계로 나누어 해결할 수 있습니다.1의 개수 세기: Number.prototype.toString(2)로 숫자를 이진 문자열로 변환한 뒤, 문자열에서 1의 개수를 계산합니다.정렬 수행: Array.prototype.sort()의 비교
문제 이해하기문자열을 하나 입력받아, 자음은 원래의 상대적인 위치를 그대로 유지한 채 모음만 모두 문자열의 끝으로 밀어낸 새로운 문자열을 생성해 반환하는 JavaScript 함수를 작성해야 합니다.예를 들어 sample string이 입력으로 주어진다면, 자음인 s, m, p, l, s, t, r, n, g는 기존 순서대로 앞쪽에 배치되고, 모음인 a, e, i는 뒤로 이동해 최종 결과는 smpl strngaei가 됩니다.해결 접근 방식이 문제는 다음과 같은 단계로 해결할 수 있습니다.자음을 담아둘 변수(front)와 모음을 담아둘
문제 그램(G), 킬로그램(KG), 톤(T)이라는 세 가지 단위로 표현된 무게 값이 담긴 문자열 배열을 입력받아, 가벼운 것부터 무거운 것 순서대로 정렬하는 JavaScript 함수를 작성해야 합니다. 핵심은 각 문자열에서 숫자 부분과 단위 부분을 분리한 뒤, 모든 값을 하나의 기준 단위(여기서는 킬로그램)로 환산하는 것입니다. 단위를 통일해야 서로 다른 단위 사이에서도 올바른 크기 비교가 가능하기 때문입니다. 예제 다음은 위 문제를 해결하는 코드입니다 − const arr = [1456G, 1KG, .5T, .005T
문제 소개학교 축제 행사에서 다음과 같은 게임을 진행한다고 가정해 보겠습니다.n개의 수도꼭지가 준비되어 있고, n명의 학생이 무작위로 선발됩니다. 지도 교사는 첫 번째 학생에게 모든 수도꼭지를 열어 보라고 지시합니다. 이어서 두 번째 학생은 2번째마다 해당하는 수도꼭지를 찾아가 잠그고, 세 번째 학생은 3번째마다 해당하는 수도꼭지가 닫혀 있으면 열고 열려 있으면 닫습니다. 네 번째 학생은 4번째마다 같은 작업을 수행하며, 이 과정이 n번째 학생까지 계속됩니다.모든 과정이 끝난 후, 몇 개의 수도꼭지가 열려 있을까요? 우리는 숫자 n
문제 소개숫자로만 이루어진 문자열을 입력받는 JavaScript 함수를 작성해야 합니다. 함수는 문자열의 각 자릿수를 개별 숫자로 분리한 뒤, 짝수 숫자들의 합과 홀수 숫자들의 합을 각각 계산합니다. 그리고 짝수 합이 홀수 합보다 크면 true, 그렇지 않으면 false를 반환하면 됩니다.예제 코드다음은 이 문제를 해결하는 전체 코드입니다.const num = 645457345;const isEvenGreater = (str = ) => { let evenSum = 0; let odd
문제 상황삼각형의 세 변의 길이를 입력받아 헤론의 공식(Herons formula)을 활용해 넓이를 계산하는 JavaScript 함수를 작성해야 합니다.헤론의 공식은 삼각형의 높이나 각도 정보 없이 오직 세 변의 길이만으로 면적을 구할 수 있는 고전적인 기하학 공식입니다. 먼저 세 변의 길이의 합을 2로 나눈 값인 반둘레(semi-perimeter) s를 구한 뒤, 다음 식에 대입하면 됩니다.면적 = √(s × (s - a) × (s - b) × (s - c))예제 코드다음은 위 공식을 JavaScript로 구현한 코드입니다.con
증가하는 삼각형이란?이 문제에서 다루는 증가하는 삼각형은 아래와 같은 형태입니다. 1 2 3 4 5 6 7 8 9 10삼각형은 위에서부터 아래로 행(row)이 하나씩 늘어나며, 각 행에는 자연수가 왼쪽부터 오른쪽으로 순서대로 채워집니다. 첫 번째 행에는 1개, 두 번째 행에는 2개, 세 번째 행에는 3개의 숫자가 들어가는 식입니다.문제 정의숫자 n을 입력받아 증가하는 삼각형의 n번
문제 JavaScript 함수를 하나 작성해야 합니다. 이 함수는 숫자 n을 입력받고, n보다 작거나 같은 모든 완전 세제곱수(perfect cube)의 합을 반환해야 합니다. 완전 세제곱수란 어떤 정수를 세 번 곱한 값으로 표현할 수 있는 수를 의미합니다. 예를 들어 1, 8, 27, 64는 각각 1³, 2³, 3³, 4³이므로 모두 완전 세제곱수에 해당합니다. 예시 다음은 해당 코드입니다 − const num = 23546; const sumPerfectCubes = (num = 1) => { le
문제 정의십진수 하나를 입력받아 이진수로 변환한 다음, 각 비트를 반전시키고(1은 0으로, 0은 1로), 마지막으로 새롭게 만들어진 이진수에 해당하는 십진수 값을 반환하는 JavaScript 함수를 작성하는 것이 목표입니다.예제 코드다음은 위 문제를 해결하는 전체 코드입니다.const num = 45657;const reverseBitsAndConvert = (num = 1) => { const binary = num.toString(2); le
문제 소개숫자 n을 입력받아, 1부터 n까지의 모든 숫자로 나누어 떨어지는 가장 작은 수를 찾아 반환하는 JavaScript 함수를 작성해야 합니다.이 문제는 수학적으로 1부터 n까지의 모든 수의 최소공배수(LCM)를 구하는 것과 동일합니다. 예를 들어 n이 11이라면, 1부터 11까지의 모든 정수로 나눌 수 있는 가장 작은 수는 27720입니다.예제 코드다음은 이 문제를 해결하는 코드입니다 −const num = 11;const smallestDivisible = (num = 1) => { l
문제 이해하기숫자 n을 입력받아, 다음 디오판틴 방정식(Diophantine equation)을 만족하는 모든 정수 쌍 x와 y를 찾는 JavaScript 함수를 작성해야 합니다.x² − 4y² = n함수는 조건을 만족하는 모든 [x, y] 쌍을 배열 형태로 반환해야 합니다.접근 방법이 방정식은 인수분해 공식을 활용하면 효율적으로 풀 수 있습니다. 좌변을 인수분해하면 다음과 같습니다.(x − 2y)(x + 2y) = n여기서 a = x − 2y, b = x + 2y라고 하면 a × b = n이 되므로, n의 약수 쌍 (a, b)를