문제 상황1부터 n까지의 숫자가 포함된 배열을 입력받아, 이 배열 속에서 빠진 숫자 하나를 찾아 반환하는 JavaScript 함수를 작성해야 합니다.여기서 까다로운 점은 두 가지입니다. 첫째, 배열에서 정확히 한 개의 숫자가 누락되어 있고, 둘째, 배열이 정렬되어 있지 않다는 것입니다. 다행히도 반복문으로 일일이 비교하지 않고도 수학적 공식을 활용하면 매우 효율적으로 문제를 해결할 수 있습니다.해결 아이디어: 가우스 덧셈 공식핵심 원리는 간단합니다. 1부터 m까지의 연속된 자연수의 합은 m × (m + 1) ÷ 2라는 가우스 덧셈
문제 소개두 개의 숫자 m과 n으로 구성된 배열을 통해 범위를 지정받는 JavaScript 함수를 작성해야 합니다.이 함수는 m부터 n까지(단, 1 ≤ m ≤ n)의 정수 중에서, 해당 정수의 모든 약수를 각각 제곱한 뒤 그 합을 계산했을 때 결과값이 완전제곱수(perfect square)가 되는 수들을 찾아야 합니다.함수의 반환값은 여러 개의 하위 배열을 담은 배열입니다. 각 하위 배열은 두 개의 요소로 구성됩니다. 첫 번째 요소는 조건을 만족하는 정수이고, 두 번째 요소는 그 정수의 제곱된 약수들의 합입니다.코드 구현다음은 위
문제JavaScript 함수를 작성하여 직육면체의 길이(length), 너비(width), 높이(height)를 입력받고, 해당 직육면체의 대각선 길이를 반환해야 합니다.대각선 길이 공식직육면체의 대각선은 한 꼭짓점에서 반대편 꼭짓점까지 이어지는 선분입니다. 3차원 공간에서의 대각선 길이는 피타고라스 정리를 세 차원으로 확장한 다음 공식으로 구할 수 있습니다.d = √(l² + w² + h²)여기서 l은 길이, w는 너비, h는 높이를 나타냅니다.예제다음은 위 공식을 구현한 코드입니다 −const height = 10;
이번 글에서는 자바스크립트를 활용해 두 개의 직육면체(cuboid) 부피 차이를 계산하는 방법을 알아보겠습니다.문제 정의두 직육면체의 가로, 세로, 높이 값을 입력으로 받는 자바스크립트 함수를 작성해야 합니다.함수는 각 직육면체의 부피를 계산한 뒤, 두 부피의 절댓값 차이를 반환해야 합니다.접근 방법직육면체의 부피는 다음 공식으로 구할 수 있습니다.부피 = 가로 × 세로 × 높이따라서 각 직육면체의 부피를 위 공식으로 계산하고, Math.abs() 메서드를 사용하면 두 부피의 절댓값 차이를 손쉽게 구할 수 있습니다.예제 코드 { &
문제숫자로 이루어진 배열을 인자로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 배열의 각 숫자를 확인하여 짝수이면 제곱하고, 홀수이면 제곱근을 구한 뒤, 변환된 모든 숫자의 합계를 소수점 둘째 자리까지 반올림하여 반환해야 합니다.해결 접근 방식배열의 각 요소를 순회하며 나머지 연산자(%)를 사용해 짝수 여부를 판별합니다.짝수라면 자기 자신을 곱해 제곱하고, 홀수라면 Math.sqrt()로 제곱근을 구합니다.reduce() 메서드를 사용해 변환된 모든 값을 하나의 합계로 누적합니다.예제 코드다음은 위 문제를 해결하는
문제 설명문자열을 입력으로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 다음과 같은 과정을 거쳐야 합니다.먼저 문자열의 각 문자를 해당하는 ASCII 문자 코드로 변환한 뒤, 이 코드들을 모두 이어 붙여 하나의 큰 숫자를 만듭니다. 다음으로 이 숫자에서 등장하는 모든 7을 1로 바꿔 또 다른 숫자를 만듭니다. 마지막으로 원래 숫자와 변경된 숫자의 차이를 반환하면 됩니다.접근 방법두 숫자의 자릿수 구성은 7이 있던 위치만 달라질 뿐 완전히 동일합니다. 따라서 실제로 거대한 숫자를 만들 필요 없이, ASCII 코드에서
문제 정의 문자열 형태의 숫자 배열을 입력받아 하나의 문자열을 반환하는 자바스크립트 함수를 작성해야 합니다. 각 숫자는 알파벳 소문자와 역순으로 대응되며, 그 규칙은 a=26, b=25, ..., z=1입니다. 또한 특수 문자도 함께 처리해야 합니다. 느낌표(!)는 27, 물음표(?)는 28, 공백( )은 29에 해당합니다. 예제 코드 const arr = [5, 23, 2, 1, 13, 18, 6]; const convertToString = (arr) => { let res = ; for (let char
문제 이해하기이번 문제는 JavaScript 함수를 작성하는 것입니다. 함수는 하나의 숫자 n을 입력받아야 하며, n보다 큰 수 중에서 가장 작은 소수를 찾아 반환해야 합니다.예를 들어, 101이 입력되면 101 자체가 소수이므로 그다음으로 큰 소수인 103을 반환해야 합니다.접근 방법이 문제는 두 단계로 나누어 해결할 수 있습니다.1단계: 소수 판별 함수 — 어떤 수가 소수인지 확인합니다. 효율성을 위해 2부터 해당 수의 제곱근까지만 나누어 떨어지는지 검사하면 됩니다. 제곱근까지만 확인해도 충분한 이유는, 만약 num = a ×
문제 양수와 음수가 섞여 있는 정수 배열을 입력받는 JavaScript 함수를 작성해야 합니다. 이 함수는 두 개의 요소를 가진 배열을 반환하며, 첫 번째 요소는 양수의 개수, 두 번째 요소는 음수들의 합계가 되어야 합니다. 예제 코드 다음은 위 문제를 해결하는 코드입니다 − const arr = [1, 2, 1, -2, -4, 2, -6, 2, -4, 9]; const posNeg = (arr = []) => { const creds = arr.reduce((acc, val) => {
문제 정의문자열을 입력받아 모든 공백이 제거된 새로운 문자열을 반환하는 JavaScript 함수를 작성해야 합니다. 즉, 문자열 내의 모든 공백 문자를 빈 문자열()로 대체하는 것이 목표입니다.방법 1: 반복문을 활용한 구현가장 기본적인 접근 방식은 문자열을 한 글자씩 순회하면서 공백이 아닌 문자만 결과 문자열에 이어 붙이는 것입니다.const str = some random string ex a m pl e;const removeSpaces = (str = ) => { let res = ; &nb
문제 소개이번 글에서는 JavaScript를 활용해 숫자의 각 자릿수 합계와 각 자릿수 곱 사이의 절댓값 차이를 계산하는 방법을 알아보겠습니다.예를 들어 숫자 434312가 주어졌을 때, 각 자릿수는 4, 3, 4, 3, 1, 2입니다.자릿수의 합: 4 + 3 + 4 + 3 + 1 + 2 = 17자릿수의 곱: 4 × 3 × 4 × 3 × 1 × 2 = 288따라서 두 값의 절댓값 차이는 |288 − 17| = 271이 됩니다.해결 접근 방식구현 과정은 다음과 같습니다.숫자를 문자열로 변환한 뒤 split()으로 개별 자릿수 배열로
문제 정의보글(Boggle) 보드는 개별 문자들이 배치된 2차원 배열입니다. 예를 들어 다음과 같은 형태입니다.const board = [ ["I","L","A","W"], ["B","N","G","E"], ["I","U",&qu
문제 이해하기 문자열을 하나 입력받아, 해당 문자열의 모든 문자가 각각 한 번씩만 등장하면 true를, 중복된 문자가 존재하면 false를 반환하는 JavaScript 함수를 작성하는 것이 목표입니다. 예를 들어 thisconaluqe처럼 어떤 문자도 반복되지 않는 문자열이라면 결과는 true여야 하고, hello처럼 같은 문자가 두 번 이상 나타나는 문자열이라면 결과는 false가 되어야 합니다. 해결 접근 방식 이 문제는 indexOf()와 lastIndexOf() 메서드를 활용하면 간단하게 해결할 수 있습니다. index
문제 소개이번 글에서는 JavaScript로 해결할 수 있는 흥미로운 알고리즘 문제를 다뤄보겠습니다. 숫자 n을 입력받아, 해당 숫자의 2진수 표현 뒤에 가장 짧은 이진 문자열을 이어 붙여 만들 수 있는 5의 다음 배수를 반환하는 함수를 작성하는 것이 목표입니다.예를 들어 숫자 8의 2진수는 1000입니다. 이 뒤에 이진 문자열을 하나씩 이어 붙여가며 그 결과값이 5로 나누어떨어지는지 확인하고, 조건을 만족하는 가장 짧은 문자열을 찾으면 됩니다.해결 접근 방식핵심 아이디어는 다음과 같습니다.1. 입력받은 숫자를 2진수 문자열로 변환
문제문자열과 숫자를 두 개의 인수로 받는 JavaScript 함수를 작성해야 합니다.이 함수는 첫 번째 인수로 전달된 문자열을 두 번째 인수로 지정된 횟수만큼 반복한 뒤, 반복된 결과 문자열을 반환해야 합니다.접근 방법가장 간단한 방법은 배열을 활용하는 것입니다. 먼저 배열에 원본 문자열을 담고, 지정된 횟수만큼 같은 문자열을 추가한 후 join() 메서드로 하나의 문자열로 합치면 됩니다.예제 코드다음은 구현 예시입니다 −const str = this;const num = 8;const repeatSpecificTimes
문제 정의하나의 숫자를 인자로 받아, 그 숫자를 거꾸로 뒤집은 값이 소수(prime number)인 경우에는 true를, 그렇지 않은 경우에는 false를 반환하는 JavaScript 함수를 작성해야 합니다.예를 들어 13을 뒤집으면 31이 되는데, 31은 소수이므로 이 경우 함수는 true를 반환해야 합니다. 참고로 이렇게 뒤집었을 때도 소수가 되는 수를 수학에서는 에미르프(Emirp)라고 부르기도 합니다.풀이 접근 방법이 문제는 크게 두 단계로 나누어 해결할 수 있습니다.1단계 – 숫자 뒤집기: 숫자를 문자열로 변환한 뒤, 각
문제 설명 정수로 이루어진 배열을 입력으로 받는 JavaScript 함수를 작성해야 합니다. 이때 배열의 각 요소는 -1부터 1 사이의 값을 가집니다. 함수는 주어진 수열에서 합이 0 이상이 되는 가장 긴 연속 구간(부분 배열)의 길이를 반환해야 합니다. 예시 코드 다음은 위 문제를 해결하는 구현 코드입니다. const arr = [-1, -1, 0, 1, 1, -1, -1, -1]; const longestPositiveSum = (arr = []) => { let sum = 0; &nb
문제 소개정렬되어 있는 두 개의 숫자 배열이 주어졌을 때, 두 배열의 모든 요소를 하나의 새로운 배열에 합치고, 기존과 동일한 정렬 순서를 유지한 채 결과 배열을 반환하는 자바스크립트 함수를 작성해야 합니다.예를 들어 [1, 3, 4, 5, 6, 8]과 [4, 6, 8, 9, 11]이라는 두 배열이 있다면, 이 둘을 병합한 결과는 다음과 같아야 합니다.[ 1, 3, 4, 4, 5, 6, 6, 8, 8, 9, 11 ]접근 방식두 배열이 이미 정렬되어 있다는 점이 핵심입니다. 이 경우 투 포인터(Two Pointer) 기법을 사용하면
두 개의 하위 배열을 요소로 가지는 배열을 입력받아 처리하는 JavaScript 함수를 작성해야 합니다. 각 하위 배열은 두 개의 숫자를 포함하며, 분수 형태의 유리수를 나타냅니다.함수는 이 두 유리수를 더한 뒤, 그 결과를 기약분수(더 이상 약분할 수 없는 가장 간단한 형태)로 표현하는 두 숫자로 이루어진 새로운 배열을 반환해야 합니다. 예를 들어 [1, 2]는 1/2를, [1, 3]은 1/3을 의미합니다.풀이 코드const arr = [ [1, 2], [1, 3] ]; const findSum = (arr = []
문제 정의주어진 알고리즘에 따라 메시지를 변환하는 JavaScript 함수를 작성해야 합니다. 우리가 알고 있는 정보는 오직 해당 메시지에 적용된 암호화 알고리즘뿐이며, 이 알고리즘의 동작을 코드로 구현하는 것이 목표입니다.알고리즘은 다음 세 단계로 구성됩니다.문자열 뒤집기: 메시지 문자열의 순서를 거꾸로 뒤집습니다.ASCII 코드 치환: 모든 영문자를 작은따옴표로 감싼 ASCII 코드 값으로 대체합니다. 예를 들어 A는 65, h는 104가 됩니다.숫자와 공백 유지: 숫자와 공백은 변환 없이 그대로 삽입합니다.즉, 이 함수는 위