문제 정의 두 개의 배열 pushed와 popped를 각각 첫 번째, 두 번째 인자로 받는 JavaScript 함수를 작성해야 합니다. 두 배열의 모든 요소는 중복 없이 고유한 값으로만 구성되어 있다고 보장됩니다. 이 함수는 popped 배열이 처음에 비어 있던 스택에 대해 push(삽입)와 pop(삭제) 연산을 순서대로 수행한 결과로 나올 수 있는 경우에 한해서만 true를 반환하고, 그렇지 않다면 false를 반환해야 합니다. 입력 예시 const pushed = [1, 2, 3, 4, 5]; const popped = [4
문제 정의숫자로 이루어진 배열 arr을 첫 번째이자 유일한 인자로 받는 JavaScript 함수를 작성해야 합니다.여기서 이동(move)이란 배열 안에서 임의의 요소 arr[i]를 하나 골라 1만큼 증가시키는 작업을 의미합니다. 함수는 배열 arr의 모든 값을 서로 다르게(고유하게) 만들기 위해 필요한 최소 이동 횟수를 반환해야 합니다.예를 들어, 함수에 다음과 같은 입력이 주어졌다고 가정해 보겠습니다.const arr = [12, 15, 7, 15];그렇다면 출력 결과는 다음과 같아야 합니다.const output = 1;출력 설
문제 소개숫자 배열 arr를 첫 번째이자 유일한 인수로 전달받는 JavaScript 함수를 작성해야 합니다.이 함수는 입력 배열이 중앙 정점 배열(centrally peaked array)인지 판별하여, 해당하면 true, 그렇지 않으면 false를 반환해야 합니다.중앙 정점 배열의 조건배열이 중앙 정점 배열이 되기 위해서는 다음 조건을 만족해야 합니다.배열 길이가 3 이상이어야 합니다. (arr.length >= 3)0 < i < arr.length - 1을 만족하는 인덱스 i가 존재해야 하며:정점까지는 값이 계속
루카스 수열이란?루카스 수열(Lucas Numbers)은 프랑스 수학자 에두아르 루카스(Édouard Lucas)의 이름을 딴 수열로, 피보나치 수열과 매우 유사한 점화식으로 정의됩니다. 다만 초기값이 다르다는 점이 특징입니다.L(0) = 2L(1) = 1L(n) = L(n-1) + L(n-2)이 정의에 따르면 루카스 수열은 2, 1, 3, 4, 7, 11, 18, 29, 47, 76...과 같은 형태로 이어집니다.문제 정의숫자 n을 입력받아 n번째 루카스 수를 반환하는 자바스크립트 함수를 작성해야 합니다.재귀 함수로 구현하기가장
문제 정의문자열을 인자로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 문자열의 모든 문자를 해당 아스키(ASCII) 코드의 16진수(hex) 값으로 변환한 뒤, 변환된 16진수 문자열에 포함된 숫자들만 추출하여 그 합계를 반환해야 합니다. 단, 16진수 표현에 등장하는 알파벳 문자(a~f)와 0은 무시합니다.예제 코드다음은 위 문제를 해결하는 코드입니다.const str = "Hello, World!";const toHexAndSum = (str = ) => { return
더블턴 숫자(Doubleton Number)란?서로 다른 숫자를 정확히 두 개만 포함하는 자연수를 더블턴 숫자(doubleton number)라고 부릅니다. 예를 들어 23, 35, 100, 12121은 각각 두 개의 서로 다른 숫자만 사용하므로 더블턴 숫자에 해당합니다. 반면 123은 세 개의 숫자(1, 2, 3)를 사용하고, 9980 역시 세 개의 숫자(9, 8, 0)를 사용하기 때문에 더블턴 숫자가 아닙니다.문제 정의숫자를 하나 입력받아, 해당 숫자가 더블턴 숫자이면 true를, 그렇지 않으면 false를 반환하는 자바스크립트
문제JavaScript에서 내장 함수인 String()이나 toString()을 사용하지 않고, 명시적인 문자열 연결도 활용하지 않은 채 숫자 n을 받아 해당하는 문자열로 변환하는 함수를 작성해야 합니다.접근 방식핵심 아이디어는 다음과 같습니다.1. 나머지 연산자(%)를 사용해 숫자의 일의 자리 값을 추출합니다.2. 추출한 숫자를 결과 문자열에 더합니다. 이때 문자열과 숫자를 더하면 JavaScript가 자동으로 형 변환(type coercion)을 수행하여 두 값이 이어지게 되므로, 별도의 변환 함수 호출 없이 문자열화가 가능합니
문제 상황1부터 시작하는 월 인덱스(1~12)를 입력받아, 해당 월이 속한 분기를 반환하는 JavaScript 함수를 작성해야 합니다. 예를 들어 7월을 입력하면 세 번째 분기(Q3)에 해당하는 3을 반환해야 합니다.분기의 기본 개념1년은 네 개의 분기로 나뉩니다.1분기(Q1): 1월 ~ 3월2분기(Q2): 4월 ~ 6월3분기(Q3): 7월 ~ 9월4분기(Q4): 10월 ~ 12월조건문을 활용한 풀이다음은 if...else 조건문을 사용해 월에 해당하는 분기를 찾는 코드입니다.const month = 7;const findQuart
문제 정의JavaScript 함수를 작성해야 합니다. 이 함수는 첫 번째이자 유일한 인수로 문자열 배열 arr를 받습니다.함수는 배열 arr 내 모든 문자열에 공통으로 등장하는 문자들을 반환해야 하며, 이때 중복된 문자도 그대로 포함해야 합니다.예를 들어, 어떤 문자가 모든 문자열에서 3번이 아닌 2번씩 나타난다면, 최종 결과에는 해당 문자가 정확히 2번만 포함되어야 합니다.입력 예시함수에 다음과 같은 입력이 주어진다고 가정해 보겠습니다.const arr = [door, floor, crook];그렇다면 출력 결과는 다음과 같아야
문제 정의숫자로 이루어진 2차원 배열 arr를 유일한 인수로 받아 처리하는 자바스크립트 함수를 작성해야 합니다.배열의 각 숫자는 다음과 같은 의미를 가집니다.0: 빈 칸을 나타냅니다.1: 신선한 토마토를 나타냅니다.2: 썩은 토마토를 나타냅니다.매 분마다 썩은 토마토와 상하좌우 4방향으로 인접해 있는 신선한 토마토는 함께 썩게 됩니다.따라서 함수는 격자에 신선한 토마토가 하나도 남지 않을 때까지 경과해야 하는 최소 시간(분)을 반환해야 하며, 모든 토마토를 썩히는 것이 불가능한 경우에는 대신 -1을 반환해야 합니다.입력 예시cons
문제리터럴 값으로 이루어진 배열 arr을 첫 번째 인수로, 숫자 num을 두 번째 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 배열에서 정확히 num개의 서로 다른(고유한) 요소를 포함하는 부분 배열(subarray)의 개수를 세어 반환해야 합니다.예를 들어, 함수에 다음과 같은 입력이 주어졌다고 가정해 보겠습니다.const arr = [12, 15, 12, 15, 18];const num = 2;그렇다면 출력은 다음과 같아야 합니다.const output = 7;출력 설명정확히 2개의 서로 다른 요소로 구성
문제 개요두 개의 숫자 m과 n을 각각 첫 번째, 두 번째 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 오직 다음 두 가지 연산만을 사용하여 화면의 숫자를 m에서 n으로 바꿀 때 필요한 최소 연산 횟수를 계산해야 합니다.두 배(Double) − 화면에 표시된 숫자에 2를 곱합니다.감소(Decrement) − 화면에 표시된 숫자에서 1을 뺍니다.예를 들어, 함수의 입력이 다음과 같다면 −const m = 5;const n = 8;출력은 다음과 같아야 합니다 −const
문제 정의배열 arr을 첫 번째이자 유일한 인수로 받는 자바스크립트 함수를 작성해야 합니다.배열 arr은 다음 두 가지 형태 중 하나의 문자열 등식으로 구성됩니다.X === YX !== Y여기서 X와 Y는 임의의 변수입니다.함수의 목표는 배열에 포함된 모든 등식에 적절한 숫자를 할당했을 때, 모든 등식이 참(true)이 되도록 만들 수 있는지 판별하는 것입니다.예를 들어, 함수에 다음과 같은 입력이 주어진다고 가정해 보겠습니다.const arr = [X===Y, Y!==Z, X===Z];그렇다면 출력 결과는 다음과 같아야 합니다.c
문제 개요 이번 글에서는 JavaScript로 서로 겹치지 않고(쌍별로 분리되어 있으며) 정렬된 순서로 주어진 두 간격 배열 arr1과 arr2를 입력받아, 두 배열의 교차 구간을 반환하는 함수를 작성해 보겠습니다. 먼저 닫힌 구간(closed interval) [a, b](단, a <= b)은 a <= x <= b를 만족하는 실수 x의 집합을 의미합니다. 두 닫힌 구간의 교집합은 공집합이거나 하나의 닫힌 구간으로 표현됩니다. 예를 들어, [1, 3]과 [2, 4]의 교집합은 [2, 3]입니다. 우리가 만들 함수는
문제 소개오름차순으로 정렬된 정수 배열 arr을 입력받는 JavaScript 함수를 작성해야 합니다. 이 함수는 배열의 각 숫자를 제곱한 값들을 담은 배열을 반환하며, 반환되는 배열 역시 오름차순으로 정렬되어 있어야 합니다.예를 들어, 함수에 다음과 같은 입력이 주어졌다고 가정해 보겠습니다.const arr = [-2, -1, 1, 3, 6, 8];그렇다면 기대되는 출력은 다음과 같습니다.const output = [1, 1, 4, 9, 36, 64];접근 방법: 투 포인터(Two Pointer) 기법배열이 이미 정렬되어 있다는 점
문제 이해하기첫 번째 인수로 숫자 배열 arr를, 두 번째 인수로 숫자 num을 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 요소들의 합이 num으로 나누어 떨어지는 연속된(contiguous), 비어 있지 않은 부분 배열의 개수를 반환해야 합니다.예를 들어, 함수에 다음과 같은 입력이 주어졌다고 가정해 보겠습니다.const arr = [4, 5, 0, -2, -3, 1]; const num = 5;그렇다면 기대하는 출력 결과는 다음과 같습니다.const output = 7;출력 설명합이 5로 나누어 떨어지는 부분
문제 정의 좌표 배열 arr을 첫 번째 인수로, 숫자 num을 두 번째 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 원점 (0, 0)에서 가장 가까운 num개의 점을 찾아 배열로 반환해야 합니다. 여기서 평면 위 두 점 사이의 거리는 유클리드 거리(Euclidean distance)를 기준으로 계산합니다. 즉, 점 (x, y)와 원점 사이의 거리는 √(x² + y²) 공식으로 구할 수 있습니다. 입력 예시 const arr = [[3,3],[5,-1],[-2,4]]; const num = 2; 각 점과 원
유니밸류(Univalued) 이진 탐색 트리란?이진 탐색 트리(Binary Search Tree, BST)를 구성하는 모든 노드가 동일한 값을 가질 때, 해당 트리를 유니밸류(Univalued) 트리라고 부릅니다. 즉, 루트부터 리프 노드까지 트리 전체의 데이터 값이 하나의 값으로 통일되어 있어야 합니다.문제 정의이번 문제에서는 이진 탐색 트리의 루트(root) 노드를 인수로 받아, 트리가 유니밸류인 경우에만 true를 반환하고 그렇지 않으면 false를 반환하는 자바스크립트 함수를 작성해야 합니다.예를 들어, 트리의 노드 값이 다
연속 숫자(Sequential Digits)란?연속 숫자를 가진 수란 숫자의 각 자릿수가 바로 앞의 자릿수보다 정확히 1만큼 큰 수를 의미합니다. 예를 들어 1234, 4567, 23456 같은 수가 대표적인 예입니다.문제 정의정확히 두 개의 요소로 이루어진 배열 arr을 입력받는 JavaScript 함수를 작성해야 합니다. 이 배열은 탐색할 숫자의 범위를 지정합니다.함수는 해당 범위(경계값 포함) 안에 속한 모든 정수 중에서 연속 숫자를 가진 값들만 골라, 오름차순으로 정렬된 배열 형태로 반환해야 합니다.예를 들어, 함수에 다음과
문제 설명 n명의 사람이 한 줄로 서 있다고 가정해 봅시다. 우리는 다음과 같은 방식으로 이들에게 바나나를 배분하려고 합니다. 첫 번째 사람에게 1개, 두 번째 사람에게 2개를 주는 식으로, 마지막 n번째 사람에게 n개의 바나나를 줍니다. 그다음 다시 줄의 맨 앞으로 돌아가서, 첫 번째 사람에게 n+1개, 두 번째 사람에게 n+2개를 주는 식으로 마지막 사람에게 2 * n개의 바나나를 줍니다. 이 과정은 바나나가 모두 소진될 때까지 반복됩니다(매 차례마다 하나씩 더 주고, 줄의 끝에 도달하면 다시 처음으로 이동). 바나나가 부족