문제 소개다음과 같은 숫자 이름 문자열이 있다고 가정해 보겠습니다.const str = TOWNE;이 문자열의 글자들을 재배열해 보면 두 개의 숫자 이름이 숨어 있는 것을 발견할 수 있습니다. 바로 2(TWO)와 1(ONE)입니다.따라서 기대하는 출력값은 21입니다.즉, 우리는 이렇게 글자가 뒤섞인 문자열을 입력받아 그 안에 포함된 숫자들을 찾아 반환하는 JavaScript 함수를 작성해야 합니다.풀이 접근 방식핵심 아이디어는 다음과 같습니다.각 숫자 이름(ONE, TWO, THREE 등)에 대해 가능한 모든 순열(permutati
문제 소개이번 글에서는 하나의 숫자를 입력받아 그 숫자를 먼저 뒤집은 다음, 뒤집힌 숫자를 각 자릿수로 분리하여 배열 형태로 반환하는 JavaScript 함수를 작성해 보겠습니다.예를 들어 입력값과 기대되는 출력값은 다음과 같습니다.입력const num = 1234567;출력const output = [7, 6, 5, 4, 3, 2, 1];입력받은 숫자 1234567을 뒤집으면 7654321이 되고, 이를 각 자릿수별로 분리하면 위와 같은 배열이 만들어집니다.해결 방법이 문제는 다음 세 단계로 해결할 수 있습니다.1. 숫자를 문자열
문제 상황소셜 네트워킹 사이트에서 특정 게시물에 좋아요를 누른 사람들의 이름이 문자열 배열로 주어진다고 가정해 봅시다. 우리는 이 배열을 입력으로 받아 적절한 문구를 반환하는 JavaScript 함수를 작성해야 합니다.규칙은 다음과 같습니다.좋아요를 누른 사람이 3명 이하라면, 함수는 좋아요를 누른 모든 사람의 이름을 그대로 포함한 문구를 반환합니다.좋아요를 누른 사람이 4명 이상이라면, 함수는 첫 번째와 두 번째 이름만 표시하고, 나머지 인원수를 함께 반환합니다.예를 들어, 아무도 좋아요를 누르지 않았다면 no one likes
문제 정의 불리언(Boolean) 값으로 이루어진 배열과 논리 연산자를 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 배열의 각 요소에 연산자를 왼쪽에서 오른쪽으로 순차적으로 적용한 뒤, 그 최종 결과를 불리언 값으로 반환해야 합니다. 예를 들어 [true, true, false] 배열에 AND 연산자가 주어지면, true && true && false 순서로 계산되어 최종적으로 false가 반환됩니다. 예제 코드 const array = [true, true, false]; const op = AND; f
이번 글에서는 숫자를 입력받아 자릿수를 거꾸로 뒤집은 값을 반환하는 JavaScript 함수를 작성해 보겠습니다.가장 중요한 조건은 숫자의 부호가 유지되어야 한다는 점입니다. 예를 들어, 음수를 뒤집더라도 결과는 여전히 음수여야 합니다.문제 정의주어진 숫자의 자릿수 순서를 반대로 바꾸는 함수를 만듭니다.양수 123 → 321음수 -224 → -422즉, 단순히 문자열을 뒤집는 방식이 아니라 부호 정보를 보존하면서 뒤집어야 합니다.해결 코드다음은 위 문제를 해결하는 코드입니다.const num = -224;function revers
문제 소개JavaScript에는 문자열을 대문자로 변환하는 내장 메서드인 String.prototype.toUpperCase()가 이미 존재합니다. 하지만 이번 글에서는 이 메서드를 사용하지 않고 동일한 기능을 직접 구현해 보겠습니다.요구 사항은 다음과 같습니다.작성할 함수는 String 클래스의 프로토타입(prototype) 객체에 정의되어야 합니다.문자열에 포함된 모든 영문 알파벳을 대문자로 변경한 새로운 문자열을 반환해야 합니다.구현 방법핵심 아이디어는 매우 단순합니다. 먼저 소문자 알파벳 목록과 대문자 알파벳 목록을 각각 준
문제 정의다음과 같은 규칙으로 정의되는 증가 수열을 생각해 봅시다.수열의 첫 번째 항은 seq(0) = 1입니다.수열에 포함된 각 x에 대해 y = 2 * x + 1과 z = 3 * x + 1 역시 반드시 수열에 포함되어야 합니다.위 규칙으로 만들어지지 않는 다른 숫자는 수열에 존재할 수 없습니다.따라서 이 수열의 처음 몇 개 항은 다음과 같습니다.[1, 3, 4, 7, 9, 10, 13, 15, 19, 21, 22, 27, ...]즉, 우리가 작성해야 할 함수는 숫자 n을 입력받아 이 수열의 n번째 항을 반환하는 것입니다.접근 방
문제 상황JavaScript 함수를 작성해야 합니다. 이 함수는 문자열(str)을 매개변수로 받아서, 알파벳 문자만 남기고 나머지는 모두 제거한 뒤 해당 문자들을 역순으로 반전시켜 반환하는 역할을 수행합니다.즉, 숫자나 특수문자 같은 비(非)알파벳 문자는 무시하고, 오직 영문 대소문자만 추출하여 순서를 거꾸로 뒤집어야 합니다.접근 방법이 문제는 JavaScript의 내장 메서드 체이닝을 활용하면 간단하게 해결할 수 있습니다.split() — 문자열을 한 글자씩 배열로 분리합니다.reverse() — 배열 요소들의 순서를 뒤집습니다.
문제 이해하기이번 문제는 JavaScript 함수를 작성하여, 하나의 숫자를 입력받으면 n부터 1까지의 모든 자연수를 역순으로 담은 배열을 반환하는 것입니다.예를 들어, 입력값이 6이라면 [6, 5, 4, 3, 2, 1]과 같은 배열이 결과로 나와야 합니다.입력 예시const num = 6;출력 예시const output = [ 6, 5, 4, 3, 2, 1 ];해결 방법구현 접근 방식은 다음과 같습니다.입력받은 숫자가 소수일 수 있으므로 Math.round()를 사용해 가장 가까운 정수로 반올림합니다.음수가 입력될 경우를 대비해
문제 정의초(second) 단위의 숫자를 입력받아, 해당 값에 포함된 시간(hours)과 분(minutes)을 계산하여 문자열 형태로 반환하는 JavaScript 함수를 작성해야 합니다.예를 들어 3601초가 주어졌다면, 이는 1시간 0분에 해당하므로 다음과 같은 결과가 출력되어야 합니다.입력 예시const seconds = 3601;출력 예시1 hour(s) and 0 minute(s)해결 접근 방식이 문제는 간단한 나눗셈 연산으로 해결할 수 있습니다.시간 계산: 전체 초를 3600(1시간 = 3600초)으로 나눈 후 정수 부분만
문제 정의숫자 하나를 입력받아 해당 숫자의 약수(divisor) 개수를 반환하는 JavaScript 함수를 작성해야 합니다.입력 예시const num = 30;출력 예시const output = 8;결과가 8인 이유는 30의 약수가 다음과 같이 총 8개이기 때문입니다 −1, 2, 3, 5, 6, 10, 15, 30핵심 원리: 소인수분해 활용하기이 알고리즘은 소인수분해를 기반으로 동작합니다. 어떤 자연수 N을 소수의 거듭제곱 곱으로 나타내면 다음과 같습니다.N = pa × qb × rc × …이때 N의 약수 개수는 각 지수
문제 설명어떤 수가 10a + b 형태로 표현될 때, a − 2b가 7로 나누어떨어지면 원래의 수 역시 7의 배수라는 수학적 성질이 있습니다.이 규칙을 7의 배수 여부를 명확히 알 수 있는 수가 나올 때까지 반복해서 적용합니다. 두 자리 이하의 숫자는 7의 배수인지 쉽게 판단할 수 있으므로, 수가 두 자리 이하가 되는 시점에 계산을 멈추면 됩니다.따라서 우리가 작성해야 할 것은 하나의 숫자를 입력받아 위 과정을 반복하고, 두 자리 이하의 수로 줄이는 데 필요한 단계 수(반복 횟수)와 마지막에 얻어진 두 자리 이하의 숫자를 함께 반환
문제 상황혼합된 데이터 유형(숫자, 문자열, 불리언 등)이 섞여 있는 배열이 주어졌을 때, 각 요소를 데이터 타입별로 분류하여 객체 형태로 반환하는 JavaScript 함수를 작성해야 합니다. 이때 반환되는 객체는 데이터 타입 이름을 키(key)로, 해당 타입의 요소들을 담은 배열을 값(value)으로 가져야 합니다.해결 코드다음은 typeof 연산자와 hasOwnProperty() 메서드를 활용한 해결 방법입니다.const arr = [1, a, [], 4, 5, 34, true, undefined, null];const grou
문제 소개문장(단어들의 나열)과 하나의 숫자를 입력받아, 그 숫자로 지정한 길이보다 긴 모든 단어를 배열 형태로 반환하는 JavaScript 함수를 작성해야 합니다.입력 예시const str = this is an example of a basic sentence;const num = 4;출력 예시const output = [ example, basic, sentence ];위 문장에서 길이가 4보다 큰 단어는 example(7자), basic(5자), sentence(8자) 세 개뿐이기 때문에 이런 결과가 나옵니다.예제 코드다음은
문제 소개이번 글에서 다룰 문제는 공백으로 구분된 여러 개의 숫자가 담긴 문자열을 입력받아, 그중 가장 큰 숫자와 가장 작은 숫자를 찾아 공백으로 구분된 하나의 문자열로 반환하는 JavaScript 함수를 작성하는 것입니다.예를 들어 입력 문자열과 기대되는 출력은 다음과 같습니다.입력 예시const str = 5 57 23 23 7 2 78 6;출력 예시const output = 78 2;78이 문자열 내에서 가장 큰 숫자이고, 2가 가장 작은 숫자이기 때문입니다.해결 방법이 문제는 다음과 같은 단계로 해결할 수 있습니다.split
문제 정의문자열 str을 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 입력 문자열 전체를 검사한 뒤, 단 한 번만 등장하는 고유 문자만 원래 순서대로 모아 새로운 문자열을 구성해야 하며, 두 번 이상 나타나는 모든 중복 문자는 결과에서 완전히 제거되어야 합니다.예제 코드다음은 위 문제를 해결하는 코드입니다 −const str = hey there i am using javascript;const removeAllDuplicates = (str = ) => { &n
이 글에서는 JavaScript를 사용하여 두 숫자 m과 n을 입력받아 다음 수식의 값을 계산하고 반환하는 함수를 작성하는 방법을 알아봅니다.(m)1/n즉, m의 n제곱근(n-th root)을 구하는 것입니다. 예를 들어 m = 16, n = 4가 주어지면 결과는 2가 되어야 합니다. 왜냐하면 2⁴ = 16이기 때문입니다.해결 접근 방식m의 n제곱근은 수학적으로 m^(1/n)과 동일합니다. JavaScript에서는 내장 객체인 Math.pow() 메서드를 활용하면 간단하게 계산할 수 있습니다.Math.pow(base, exponen
문제 소개이번 글에서는 정수로 이루어진 배열을 입력받아 다음 조건을 만족하는 값을 반환하는 JavaScript 함수를 작성해 보겠습니다.조건: 짝수 인덱스(0, 2, 4...)에 위치한 모든 정수의 합을 구한 뒤, 마지막 인덱스에 있는 정수를 곱한 결과를 반환합니다.먼저 예시 배열을 살펴보겠습니다.const arr = [4, 1, 6, 8, 3, 9];위 배열에서 짝수 인덱스(0, 2, 4)에 해당하는 요소는 4, 6, 3이며, 이들의 합은 13입니다. 마지막 요소는 9이므로, 최종 결과는 13 × 9 = 117이 됩니다.const
숫자 n을 입력받아, 1부터 n까지의 정수를 각각 한 번씩 사용하면서 인접한 두 수의 합이 항상 완전제곱수가 되도록 배치한 배열을 반환하는 JavaScript 함수를 작성해야 합니다. 만약 조건을 만족하는 배치가 존재하지 않는다면 false를 반환합니다. 문제 이해하기 예를 들어 n이 15라면, 함수는 1부터 15까지의 모든 정수를 정확히 한 번씩 포함하는 배열을 만들어야 하며, 배열에서 나란히 있는 두 수의 합은 반드시 4, 9, 16, 25처럼 어떤 정수의 제곱이어야 합니다. 접근 방식: 백트래킹 이 문제는 백트래킹(backt
문제 소개이번 글에서는 하나의 숫자를 입력받아, 각 자릿수의 값을 명확히 보여주는 확장된 형태(expanded form)의 문자열을 반환하는 JavaScript 함수를 작성해 보겠습니다.예를 들어 숫자 56577이 입력되면, 이를 만 단위부터 일의 자리까지 분해하여 다음과 같은 결과를 얻어야 합니다.50000 + 6000 + 500 + 70 + 7풀이 코드다음은 위 문제를 해결하는 전체 코드입니다. { const str = String(num); let res = ; let multiplier = Math.po