문제 상황두 개의 알파벳 부대가 전장에서 격돌하는 상황을 생각해 봅시다. 각 팀의 병사와 무게(전력)는 아래와 같습니다.팀 A병사무게A1B2C3D4팀 B병사무게W1X2Y3Z4병사 외에도 전장에는 폭탄이 배치되어 있으며, 폭탄은 느낌표(!) 기호로 표시됩니다. 폭탄이 폭발하면 좌우에 인접한 병사를 제거하고, 폭탄 자체도 함께 사라집니다.예를 들어 A!BC는 폭탄이 A와 B를 제거하므로 결과는 C가 되고, !!CC!!는 모든 병사가 폭탄에 인접해 있으므로 빈 문자열이 됩니다.함수는 모든 폭탄이 폭발한 뒤 어느 팀이 승리하는지, 혹은 양
문제알파벳과 공백이 섞여 있는 문자열 str을 입력받아 처리하는 JavaScript 함수를 작성해야 합니다.함수는 입력 문자열을 처음부터 끝까지 순회하면서, 각 문자를 대소문자를 구분하지 않고 등장 순서대로 알파벳 순으로 새 문자열에 이어 붙인 결과를 반환해야 합니다. 공백과 문장부호는 단순히 제거하면 됩니다!예를 들어 함수의 입력이 다음과 같다면 −입력const str = some simple letter combination!;출력const output = abceeeeiiillmmmnnoooprssttt;예제 코드다음은 위 문
문제 상황JavaScript에서 임의 개수의 배열을 입력받아, 모든 배열의 요소를 번갈아 가며(교차로) 선택해 새로운 배열을 만드는 함수를 작성해야 합니다.예를 들어, 아래와 같은 세 개의 배열이 함수에 입력된다고 가정해 보겠습니다.입력const arr1 = [1, 2, 3, 4];const arr2 = [11, 12, 13, 14];const arr3 = [a, b, c];각 배열에서 첫 번째 요소부터 순서대로 하나씩 교차로 가져오므로, 기대하는 출력 결과는 다음과 같습니다.출력const output = [1, 11, a, 2,
문제 상황JavaScript에서 문자열을 입력받아, 해당 문자열이 일반 표기법(normal case), 스네이크 케이스(snake_case), 파스칼 케이스(PascalCase) 등 어떤 형식이든 상관없이 항상 camelCase(카멜 케이스)로 변환하는 함수를 작성해야 한다고 가정해 보겠습니다.예를 들어, 함수에 다음과 같은 문자열이 입력되면:입력const str = New STRING;함수는 아래와 같은 결과를 반환해야 합니다:출력const output = newString;해결 방법 및 코드 예시정규표현식과 배열 메서드를 조합하
문제 정의두 개의 숫자 배열 arr1과 arr2를 각각 첫 번째와 두 번째 인수로 받는 자바스크립트 함수를 작성해야 합니다.이 함수는 arr2의 모든 요소가 순서와 상관없이 arr1에 포함된 어떤 요소의 제곱일 경우에만 true를 반환해야 합니다.예를 들어, 함수의 입력이 다음과 같다고 가정해 보겠습니다 −입력const arr1 = [4, 1, 8, 5, 9];const arr2 = [81, 1, 25, 16, 64];출력const output = true;위 예시에서 9² = 81, 1² = 1, 5² = 25, 4² = 16,
문제 정의 영어 알파벳으로 이루어진 문자열 str을 첫 번째이자 유일한 인수로 받는 자바스크립트 함수를 작성해야 합니다. 이 함수는 문자열 안에서 모음과 자음이 번갈아 가며 나타날 때에만 true를 반환하고, 그렇지 않은 경우에는 false를 반환해야 합니다. 예를 들어 함수의 입력이 다음과 같다면, 입력 const str = amazon; 출력 const output = true; 출력 설명 amazon 문자열에서는 모음(a, o)과 자음(m, z, n)이 서로 번갈아 나타나기 때문에 결과가 true입니다. 코드 구현 다음은 위
단조 증가 문자열(Monotonically Increasing String)이란?0과 1로만 이루어진 이진 문자열이 단조 증가(monotonically increasing) 상태라는 것은, 앞쪽에 일정 개수의 0(0개일 수도 있음)이 배치되고 그 뒤를 일정 개수의 1(역시 0개일 수도 있음)이 따르는 형태임을 의미합니다. 예를 들어 00111, 0000, 1111은 모두 단조 증가 문자열입니다.문제 정의이진 문자열 str을 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다.문자열 안에서 임의의 0을 1로,
문제 정의JavaScript 함수를 작성해야 합니다. 이 함수는 첫 번째 인자로 이진 배열(0과 1로만 이루어진 배열) arr을, 두 번째 인자로 숫자 target을 받습니다.함수의 목표는 배열 arr 안에서 요소들의 합이 정확히 target과 일치하는 연속된 부분 배열(subarray)이 총 몇 개 존재하는지 세고, 그 개수를 반환하는 것입니다.예를 들어, 함수에 다음 입력이 주어졌다고 가정해 보겠습니다.입력const arr = [1, 0, 1, 0, 1]; const target = 2;출력const output = 4;출력 설
등차수열(Arithmetic Progression)이란?등차수열(AP, Arithmetic Progression)은 연속된 두 수의 차이가 항상 일정한 수열을 의미합니다. 이 일정한 차이를 공차(common difference)라고 부릅니다.예를 들어 1, 2, 3, 4, 5, 6… 은 공차가 1인 등차수열입니다(2 − 1 = 1).문제 설명정수로 이루어진 배열 arr을 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다.함수의 목표는 주어진 배열에서 크기가 3인 등차수열의 개수를 반환하는 것입니
```html 문제 정의정수로만 이루어진 배열 arr을 첫 번째이자 유일한 인자로 받는 JavaScript 함수를 작성해야 합니다.이 배열에는 흥미로운 조건이 숨어 있습니다. 배열을 이루는 모든 수는 같은 홀짝성을 공유하되, 단 하나의 요소만 나머지와 다릅니다. 즉, 전부 짝수 가운데 홀수가 딱 하나 섞여 있거나, 전부 홀수 가운데 짝수가 딱 하나 섞여 있는 형태입니다. 함수는 바로 이 이질적인 요소 하나를 찾아 반환해야 합니다.입력 · 출력 예시예를 들어 함수에 아래와 같은 배열이 주어졌다고 가정해 보겠습니다.입력const arr
문제 개요 대문자 영어 알파벳으로 구성된 문자열 str을 첫 번째이자 유일한 인수로 받아 처리하는 자바스크립트 함수를 작성해야 합니다. 영어 알파벳과 그리스 문자 사이에는 다음과 같은 매핑 규칙이 주어집니다. A=α (알파) B=β (베타) D=δ (델타) E=ε (엡실론) I=ι (이오타) K=κ (카파) N=η (에타) O=θ (세타) &
문제 소개양의 정수로만 이루어진 배열 arr을 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다.이 함수는 먼저 배열에 담긴 숫자들을 하나로 이어 붙여 단일 숫자를 만든 뒤, 그 숫자보다 정확히 1 큰 값을 나타내는 새로운 배열을 반환해야 합니다.예를 들어 함수의 입력이 다음과 같다면 −입력const arr = [6, 7, 3, 9];출력const output = [6, 7, 4, 0];출력 설명입력 배열이 나타내는 숫자는 6739이고, 여기에 1을 더하면 6740이 되기 때문입니다.구현 예시다음
문제숫자 num을 첫 번째이자 유일한 인수로 받아 처리하는 JavaScript 함수를 작성해야 합니다.이 함수는 다음 두 가지 작업을 수행해야 합니다.먼저 입력된 숫자가 10과 서로소인지 확인합니다. 두 수의 공약수가 1뿐일 때 서로소라고 하는데, 서로소가 아니라면 -1을 반환합니다.숫자가 10과 서로소라면, 1을 그 숫자로 나눴을 때 소수 부분에서 무한히 반복되는 자릿수의 길이를 반환합니다.예를 들어 함수에 다음 값을 입력했다고 가정해 보겠습니다.입력const num = 123;출력const output = 5;출력 설명123은
문제두 개의 문자열 str1과 str2를 각각 첫 번째, 두 번째 인수로 받는 JavaScript 함수를 작성해야 합니다.이 함수는 str1을 str2에 등장하는 문자들의 순서를 기준으로 정렬한 결과를 반환해야 합니다.예를 들어 함수의 입력이 다음과 같다면,입력const str1 = coding;const str2 = gncabdi;출력const output = gncdio;출력 설명str2에서 먼저 등장하는 문자일수록 앞쪽에 배치하고, str2에 포함되지 않은 문자들은 가장 뒤에 이어 붙입니다. 위 예제에서는 g → n → c 순
문제 정의이번 글에서는 두 개의 멤버 함수를 가진 JavaScript 클래스를 작성해 보겠습니다.toHex: ASCII 문자열을 입력받아 이에 대응하는 16진수(hexadecimal) 문자열을 반환합니다.toASCII: 16진수 문자열을 입력받아 이에 대응하는 ASCII 문자열을 되돌려줍니다.예를 들어, 함수의 입력이 다음과 같다면 −입력const str = this is a string;기대되는 출력은 다음과 같습니다 −74686973206973206120737472696e67 this is a string구현 예제 el.char
아커만 함수(Ackermann Function)란?아커만 함수는 재귀 함수의 대표적인 예제로, 특히 원시 재귀 함수(primitive recursive function)가 아니라는 점에서 유명합니다. 이 함수는 입력값이 조금만 커져도 결과값이 기하급수적으로 폭발적으로 증가하며, 호출 트리(call tree)의 크기 역시 매우 빠르게 커지는 특징이 있습니다.이러한 특성 때문에 아커만 함수는 재귀 호출의 동작 방식을 이해하거나, 프로그래밍 언어의 스택 오버플로우 한계를 테스트하는 용도로 자주 활용됩니다.문제 정의두 개의 숫자 m과 n을
문제 정의두 개의 이진수 문자열 str1과 str2를 각각 첫 번째와 두 번째 인자로 받는 JavaScript 함수를 작성해야 합니다.이 함수는 두 이진수의 합을 반환해야 하며, 단순히 이진수를 십진수로 변환한 뒤 더하는 방식은 사용할 수 없습니다. 또한 최종 결과에는 의미 없는 앞자리 0이 포함되지 않아야 합니다.예를 들어, 함수의 입력이 다음과 같다면:입력const str1 = 1101; const str2 = 10111;출력const output = 100100;구현 방법가장 효율적인 접근 방식은 우리가 손으로 이진수 덧셈을
문제 상황 하나의 숫자 num을 첫 번째 인자로 받아 처리하는 JavaScript 함수를 작성해야 합니다. 이 함수의 핵심 임무는 다음 규칙에 따라 숫자 뒤에 적절한 영어 서수 접미사(st, nd, rd, th)를 붙이는 것입니다. st: 끝자리가 1인 숫자에 사용 (예: 1st — first로 발음) nd: 끝자리가 2인 숫자에 사용 (예: 92nd — ninety-second로 발음) rd: 끝자리가 3인 숫자에 사용 (예: 33rd — thirty-third로 발음) 예외 규칙: 위 규칙과 달리, 11, 12, 13으로 끝
문제단일 문자들로 이루어진 배열 arr을 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다.이 배열에는 다음 네 가지 문자만 포함될 수 있습니다.N → 북쪽(North) 방향을 의미합니다.S → 남쪽(South) 방향을 의미합니다.W → 서쪽(West) 방향을 의미합니다.E → 동쪽(East) 방향을 의미합니다.각 문자는 해당 방향으로 단위 거리만큼 이동한다는 뜻입니다. 그리고 배열 안 어디에서든 서로 반대되는 두 방향, 즉 (S와 N) 또는 (E와 W)가 인접해 있으면 두 이동은 서로를 상쇄합니다. 따라서
문제 정의양수와 음수를 모두 포함하는 정수 배열 arr를 유일한 인자로 받는 JavaScript 함수를 작성해야 합니다.이 함수는 배열 내 임의의 연속된 부분 배열(subarray) 중 합이 가장 큰 값을 선형 시간 O(n) 안에 반환해야 합니다.접근 방식: 카데인 알고리즘카데인 알고리즘의 핵심 아이디어는 다음과 같습니다. 임의의 인덱스 i에서의 local_maximum(지역 최댓값)은 arr[i] 자신과, arr[i]에 바로 앞 인덱스 i - 1의 지역 최댓값을 더한 값 중 더 큰 쪽입니다.쉽게 말해, 배열을 순회하면서 각 위치마