팬그램(Pangram) 문자열이란? 팬그램(Pangram)은 영어 알파벳 26개 글자 a부터 z까지 모든 문자를 최소 한 번 이상 포함하는 문자열을 의미합니다. 대표적인 예로 The quick brown fox jumps over the lazy dog이라는 문장이 있으며, 이 문장은 알파벳 전체를 담고 있어 가장 유명한 팬그램으로 꼽힙니다. 이번 문제에서는 문자열을 첫 번째이자 유일한 인자로 받아, 해당 문자열이 팬그램인지 아닌지를 판별하는 JavaScript 함수를 작성해야 합니다. 여기서는 편의상 소문자 알파벳만 고려하도록
코딩 테스트나 프로그래밍 문제에서 자주 등장하는 개념인 문자열의 가중치(weight)를 JavaScript로 계산하는 방법을 알아보겠습니다. 알파벳 문자의 가중치란? 영어 알파벳의 가중치는 별도의 규칙 없이 단순히 1부터 시작하는 인덱스(1-based index) 값입니다. 예를 들어, a의 가중치는 1, c의 가중치는 3, k의 가중치는 11과 같습니다. 따라서 우리는 소문자로 이루어진 문자열을 입력받아, 문자열 내 모든 문자의 가중치 합계를 계산하여 반환하는 JavaScript 함수를 작성해야 합니다. 구현 예제 코드 이를 구현
아름다운(beautiful) 문자열이란?숫자 문자열 str이 두 개 이상의 양의 정수로 이루어진 수열 arr로 분할될 수 있고, 다음 조건들을 모두 만족한다면 이를 아름다운 문자열이라고 합니다.arr[i] - arr[i - 1] = 1: 수열의 모든 인덱스 i에 대해 각 요소는 바로 앞 요소보다 정확히 1만큼 커야 합니다.수열의 어떤 요소도 선행 0(leading zero)을 포함해서는 안 됩니다. 예를 들어 50607은 [5, 06, 07]로 분할할 수 있지만, 06과 07에 선행 0이 존재하므로 아름다운 문자열이 아닙니다.분할된
이진 문자열(binary string)은 0과 1만으로 구성된 문자열입니다. 다음과 같은 이진 문자열이 있다고 가정해 보겠습니다.const str = 001001;우리는 이러한 문자열을 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다.함수는 입력 문자열에서 인접한 두 문자가 서로 같지 않도록 만들기 위해 필요한 최소 삭제 횟수를 계산하여 반환해야 합니다.문제 이해하기위 문자열의 경우 기대하는 출력 결과는 다음과 같습니다.const output = 2;그 이유는 인덱스 0과 3에 있는 0 두 개를 삭제하면
JavaScript로 두 개의 인자를 받는 함수를 작성해 보겠습니다. 첫 번째 인자는 숫자 배열, 두 번째 인자는 단일 숫자입니다. 이 함수는 배열에서 세 개의 숫자(존재하는 경우)를 골라 그 합이 두 번째 인자로 지정된 값과 일치하도록 만들어야 합니다.조건을 만족하는 모든 조합(triplet)을 2차원 배열 형태로 반환하고, 해당하는 조합이 없다면 빈 배열을 반환하면 됩니다.문제 예시입력 배열과 목표 합계가 다음과 같다고 가정해 봅시다.const arr = [2, 5, 7, 8, 9, 11, 1, 6]; const sum = 22
다음과 같은 상황을 가정해 보겠습니다.처음에 메모장에는 문자 A 하나만 존재합니다. 우리는 매 단계마다 이 메모장에 두 가지 작업 중 하나를 수행할 수 있습니다.모두 복사(Copy All) − 메모장에 현재 있는 모든 문자를 복사합니다. 부분 복사는 허용되지 않습니다.붙여넣기(Paste) − 마지막으로 복사한 문자들을 화면에 붙여넣습니다.문제 정의숫자 num을 유일한 인수로 받아, A를 정확히 num번 화면에 출력하기 위해 필요한 최소 작업 횟수(모두 복사 또는 붙여넣기)를 계산해 반환하는 JavaScript
문제 소개JavaScript 함수를 하나 작성해야 합니다. 이 함수는 첫 번째 인수로 문자열 str을, 두 번째 인수로 문자열 배열 arr을 전달받으며, str 안에서 arr에 포함된 하위 문자열을 찾아 여는 태그 <p>와 닫는 태그 </p> 한 쌍으로 감싸야 합니다.단, 다음 두 가지 규칙을 반드시 지켜야 합니다.두 하위 문자열이 서로 겹치는 경우에는 하나의 단락 태그 쌍으로 함께 감싼다.태그로 감싸진 두 하위 문자열이 연속해서 나타나는 경우에도 하나로 합친다.입력 및 출력 예시예를 들어 입력 문자열과 배열이
이번 글에서는 문자열 배열을 첫 번째 인수로 받는 JavaScript 함수를 작성해 보겠습니다. 두 번째 인수는 영어 소문자 알파벳 26자를 모두 포함하되, 임의로 섞인(scrambled) 순서의 문자열입니다.함수의 역할은 배열에 담긴 단어들이 두 번째 인수로 전달된 순서를 기준으로 사전순(lexicographical order)으로 올바르게 배치되어 있는지 확인하는 것입니다. 올바르게 배치되어 있다면 true를, 그렇지 않다면 false를 반환해야 합니다.예시예를 들어, 입력 배열과 순서 문자열이 다음과 같다고 가정해 보겠습니다.
```html 문제 상황다음과 같이 길이가 같은 두 개의 숫자 배열이 있다고 가정해 봅시다.const arr1 = [23, 67, 12, 87, 33, 56, 89, 34, 25];const arr2 = [12, 60, 45, 54, 67, 84, 36, 73, 44];두 배열을 각각 첫 번째, 두 번째 인수로 받아 대응하는 값들을 서로 비교하는 JavaScript 함수를 작성해야 합니다. 함수는 다음과 같은 값을 반환해야 합니다.-1: 첫 번째 배열에서 더 큰 대응 숫자의 개수가 두 번째 배열보다 많을 때1: 두 번째 배열에서 더
문제 개요다음과 같이 양수, 음수, 0이 섞여 있는 정수 배열이 있다고 가정해 보겠습니다.const arr = [23, -1, 0, 11, 18];우리가 작성해야 할 것은 이러한 배열을 첫 번째이자 유일한 인수로 받는 자바스크립트 함수입니다. 함수는 배열 안의 숫자들을 양수, 음수, 0의 세 그룹으로 나누고, 각 그룹이 전체에서 차지하는 비율을 소수 형태로 계산해 반환해야 합니다.예를 들어 위 배열의 길이는 5이므로, 이 배열에 대한 결과는 다음과 같습니다.const output = [0.2, 0.2, 0.6];출력 배열에는 항상
이번 글에서는 사용자가 직접 숫자를 입력하고 버튼을 클릭하면, 그 값에 맞는 숫자 패턴을 화면에 출력해 주는 JavaScript + HTML 프로그램을 만들어 보겠습니다.요구 사항프로그램은 다음 조건을 만족해야 합니다.사용자가 숫자를 입력할 수 있는 텍스트 입력창(input) 제공클릭하면 패턴을 출력하는 버튼 제공입력값 n만큼의 행으로 구성된 숫자 패턴을 화면에 표시예를 들어 사용자가 5를 입력하고 버튼을 클릭하면 아래와 같은 패턴이 출력됩니다.01 01 02 01 02 03 01 02 03 04 01 02 03 04 05구현 코드
정수로 이루어진 다음과 같은 배열이 있다고 가정해 보겠습니다.const arr = [12, 1, 4, 8, 5];우리는 이러한 배열을 유일한 인수로 받아 처리하는 JavaScript 함수를 작성해야 합니다.함수는 정확히 두 개의 정수를 담은 배열을 반환해야 하며, 각각의 의미는 다음과 같습니다.첫 번째 정수: 배열 요소 중 하나를 제외했을 때 가능한 가장 작은 합두 번째 정수: 배열 요소 중 하나를 제외했을 때 가능한 가장 큰 합여기서 중요한 조건은 단 하나의 for 루프만 사용해서 문제를 해결해야 한다는 점입니다.접근 방법핵심 아
문제 상황다음과 같은 숫자 배열이 있다고 가정해 보겠습니다.const arr = [1, 2, 1, 3, 2];우리가 작성해야 할 JavaScript 함수는 이 배열을 첫 번째 인수로 받습니다. 두 번째 인수는 원하는 합계(sum)를 나타내는 숫자이며, 세 번째이자 마지막 인수는 배열에서 요소를 중복 사용하지 않고 더했을 때 원하는 합계가 되어야 하는 요소의 개수(num)를 나타내는 숫자입니다.함수는 최종적으로 원하는 합계와 길이 조건을 모두 충족하는 그룹의 총 개수를 반환해야 합니다.입력 및 출력 예시입력값이 다음과 같다면,cons
이번 글에서는 첫 번째 인수로 숫자 배열(arr)을, 두 번째 인수로 하나의 숫자(num)를 받는 자바스크립트 함수를 작성해 보겠습니다.이 함수의 목표는 다음 조건을 만족하는 모든 쌍을 배열에서 찾아내는 것입니다.arr[i] + arr[j]가 num으로 나누어 떨어지고,i < j즉, 두 요소의 합이 num의 배수가 되면서, 앞쪽 요소의 인덱스가 뒤쪽 요소의 인덱스보다 작은 경우를 모두 찾으면 됩니다.예시입력 배열과 숫자가 다음과 같다고 가정해 보겠습니다.const arr = [1, 2, 3, 4, 5, 6];const num
이번 글에서는 중복된 값이 포함될 수 있는 정수 배열을 입력받아, 동일한 숫자로 만들 수 있는 쌍(pair)의 개수를 구하는 JavaScript 함수를 작성해 보겠습니다.예를 들어, 입력 배열이 다음과 같다고 가정해 봅시다.const arr = [1, 5, 2, 1, 6, 2, 2, 9];그렇다면 기대하는 출력 결과는 다음과 같습니다.const output = 2;그 이유는 이 배열에서 만들 수 있는 쌍이 (1, 1)과 (2, 2), 딱 두 개이기 때문입니다. 참고로 2는 세 개가 있지만, 이미 짝을 이룬 값은 다시 사용할 수 없으
이 글에서는 숫자 배열 arr와 숫자 num을 인자로 받아, 부분 배열 내 모든 요소 쌍의 절대 차이가 num 이하가 되는 가장 긴 부분 배열의 길이를 구하는 자바스크립트 함수를 작성해 보겠습니다. 여기서 말하는 부분 배열은 요소들이 연속적이어도 되고, 연속적이지 않아도 괜찮습니다. 예를 들어 입력이 다음과 같다고 가정해 보겠습니다. const arr = [7, 9, 8, 6, 6, 3]; const num = 1; 이 경우 함수가 반환해야 하는 결과는 다음과 같습니다. const output = 3; 그 이유는 조건을 만족하는
문제 이해하기이번 글에서는 숫자 하나를 인자로 받아, 그 숫자를 구성하는 각 자릿수 중에서 원래 숫자를 나머지 없이 완전히 나눌 수 있는 자릿수의 개수를 세어 반환하는 JavaScript 함수를 작성해 보겠습니다.예를 들어 입력 숫자가 다음과 같다고 가정해 봅시다.const num = 148;그렇다면 기대하는 출력 결과는 다음과 같습니다.const output = 2;그 이유는 148은 자릿수 1과 4로는 나누어떨어지지만(148 ÷ 4 = 37), 마지막 자릿수인 8로는 나누어떨어지지 않기 때문입니다(148 ÷ 8 = 18.5).
문제 이해하기문자열을 인수로 받아, 원본 문자열에서 일부 문자를 삭제한 뒤 서로 다른 문자를 최대 2개까지만 포함하는 가장 긴 문자열을 만드는 JavaScript 함수를 작성해 보겠습니다. 함수는 최종적으로 해당 문자열의 길이를 반환해야 합니다.예를 들어 입력 문자열이 다음과 같다고 가정해 봅시다.const str = kjeljsdl;이때 기대되는 출력 결과는 다음과 같습니다.const output = 4;k, e, s, d 네 문자를 제거하면 j와 l 두 종류의 문자로만 이루어진 jljl이라는 부분 문자열을 얻을 수 있습니다. 이
문자열 a와 문자열 b가 주어졌을 때, 두 문자열이 서로의 아나그램(anagram) 관계인지 판별하고 그 결과를 참(True)/거짓(False)으로 반환하는 프로그램을 작성해 보겠습니다. 아나그램이란 두 문자열이 사용하는 문자의 종류와 개수가 완전히 동일하되, 순서만 다른 경우를 의미합니다.예제 입력과 출력입력-1 −String a= india String b= nidia출력 −True설명 − 문자열 b가 문자열 a에 포함된 모든 문자를 동일하게 가지고 있으므로 두 문자열은 아나그램 관계이며, 결과는
웹 개발을 하다 보면 설정 정보나 데이터를 별도의 JSON 파일로 관리하고, JavaScript 코드에서 이를 불러와 사용해야 하는 경우가 자주 발생합니다. 이번 글에서는 외부 JSON 파일의 내용을 JavaScript로 읽어오는 대표적인 두 가지 방법을 상황별로 살펴보겠습니다.예제 시나리오먼저 다음과 같은 데이터가 담긴 config.json 파일이 있다고 가정해 보겠습니다.{ secret: sfsaad7898fdsfsdf^*($%^*$, conn