이번 글에서는 숫자 배열을 첫 번째이자 유일한 인수로 받아 처리하는 JavaScript 함수를 작성해 보겠습니다.함수는 원본 배열을 기반으로 새로운 배열을 만들어 반환해야 하며, 이 새 배열에는 값과 자신의 위치(인덱스)가 일치하는 원본 배열의 요소들만 담기게 됩니다.핵심 조건: 1 기반 인덱스 사용여기서 주의할 점은, 일반적으로 사용하는 0 기반(0-based) 인덱스가 아니라 1 기반(1-based) 인덱스를 기준으로 값과 인덱스를 비교해야 한다는 것입니다. 즉, 배열의 첫 번째 요소는 인덱스 1로 간주합니다.예시입력 배열이 다
문제 개요문자열을 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다.이 함수의 역할은 문자열의 문자들을 임의로 재배열했을 때 회문(palindrome)이 되는 경우가 존재하는지 판별하는 것입니다. 회문을 만들 수 있다면 true, 그렇지 않다면 false를 반환하면 됩니다.예를 들어, 입력 문자열이 다음과 같다고 가정해 보겠습니다.const str = amadm;이때 기대되는 출력은 다음과 같습니다.const output = true;그 이유는 문자열을 재배열하면 madam이라는 회문을 만들 수 있기 때문입
웹에서 URL에 공백이 포함되면 브라우저는 자동으로 모든 공백을 %20이라는 문자열로 대체합니다. 이는 URL 내에서 공백이 유효한 문자가 아니기 때문이며, 이를 안전하게 전송하기 위해 퍼센트 인코딩(percent encoding) 방식으로 변환하는 것입니다.문제 정의문자열을 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 원본 문자열에서 공백(whitespace)이 있던 자리를 모두 %20으로 대체한 새로운 문자열을 생성하여 반환해야 합니다.예시입력 문자열이 다음과 같다면 −con
연속으로 반복되는 문자가 포함될 수 있는 문자열을 입력받아 압축하는 JavaScript 함수를 작성해 보겠습니다.함수는 다음과 같은 방식으로 문자열을 압축해야 합니다.wwwaabbbb → w3a2b4 kkkkj → k4j단, 압축된 문자열의 길이가 원본 문자열의 길이보다 같거나 더 길어진다면 원본 문자열을 그대로 반환해야 합니다.예를 들어 aab는 a2b1로 압축할 수 있지만, 이 경우 길이가 3에서 4로 오히려 늘어나기 때문에 함수는 원본인 aab를 그대로 반환해야 합니다.구현 예제위 요구 사항을 만족하는 코드는 다음과 같습니다.
이번 문제에서는 첫 번째 인자로 숫자 배열 arr을, 두 번째 인자로 하나의 숫자 num을 받는 JavaScript 함수를 작성해야 합니다.함수의 목표는 배열에서 두 개의 수를 골라 그 합이 num보다 작으면서 가능한 한 가장 큰 경우를 찾는 것입니다. 만약 합이 num보다 작은 두 수의 조합이 존재하지 않는다면 함수는 -1을 반환해야 합니다.문제 예시예를 들어 입력 배열과 숫자가 다음과 같다고 가정해 보겠습니다.const arr = [34, 75, 33, 23, 1, 24, 54, 8]; const num = 60;이때 기대되는
정수 배열을 첫 번째이자 유일한 인자로 받는 JavaScript 함수를 작성해야 합니다. 문제 개요 이 함수는 원본 배열에서 특정 조건을 만족하는 요소들만 골라 새로운 배열을 구성한 뒤 반환해야 합니다. 여기서 조건이란, 어떤 요소 num에 대해 그 바로 앞의 값(num - 1)과 바로 뒤의 값(num + 1)이 모두 배열 안에 존재해야 한다는 것입니다. 즉, num - 1과 num + 1이 모두 원본 배열에 있을 때에만 해당 요소를 결과 배열에 포함하고, 그렇지 않은 경우에는 제외합니다. 예제 예를 들어 입력 배열이 다음과 같다고
과반수 요소(Majority Element)란?길이가 l인 배열 arr에서 과반수 요소(majority element)란 배열 전체 길이의 절반(l / 2)보다 더 많은 횟수로 등장하는 요소를 말합니다. 따라서 이러한 요소는 배열 안에 최대 한 개만 존재할 수 있습니다.이번 글에서는 JavaScript 함수 isMajority()를 작성해 보겠습니다. 이 함수는 다음과 같은 인자를 받습니다.첫 번째 인자: 항상 오름차순으로 정렬되어 있는 배열 arr두 번째 인자: 배열에서 찾고자 하는 숫자함수는 두 번째 인자로 받은 숫자가 과반수
알고리즘 문제에서 자주 만나는 회의실 배정(Meeting Room) 유형을 자바스크립트로 해결해 보겠습니다. 문제 설명 배열 안에 여러 개의 하위 배열이 주어지며, 각 하위 배열은 정확히 두 개의 요소로 이루어져 있습니다. 첫 번째 요소는 회의의 시작 시간, 두 번째 요소는 회의의 종료 시간을 의미합니다. 우리가 작성할 함수의 목표는 시간이 서로 겹치지 않으면서 한 사람이 참석할 수 있는 최대 회의 수를 구하고, 그 값을 반환하는 것입니다. 예시 예를 들어, 다음과 같은 회의 시간 배열이 입력으로 주어졌다고 가정해 봅시다. cons
문제 소개이번 글에서는 JavaScript로 숫자 하나를 유일한 인수로 받아, 해당 숫자의 모든 자릿수를 각각 제곱한 뒤 그 결과를 이어 붙여 새로운 숫자를 반환하는 함수를 작성하는 방법을 알아보겠습니다.문제 이해하기예를 들어 입력 숫자가 다음과 같다면,const num = 12349;출력 결과는 다음과 같아야 합니다.const output = 1491681;그 이유는 각 자릿수를 제곱하면 1² = 1, 2² = 4, 3² = 9, 4² = 16, 9² = 81이 되고, 이 값들을 문자열로 이어 붙이면 1 + 4 + 9 + 16 +
문제 개요전통적인 QWERTY 자판 배열 대신, 키가 단순히 영어 알파벳 순서(a, b, c, d...)대로 배치된 키보드가 있다고 가정해 보겠습니다.본격적으로 문제를 풀기 전에 다음 두 가지 조건을 먼저 정리하겠습니다.현재 손가락은 인덱스 0, 즉 a 키 위에 위치해 있습니다.한 키에서 다른 키로 이동하는 데 걸리는 시간은 두 키 인덱스 차이의 절댓값입니다. 예를 들어 a에서 k로 이동하는 데 걸리는 시간은 |0 − 10| = 10입니다.즉, 우리는 영어 소문자 알파벳으로 이루어진 문자열을 입력받아, 해당 문자열을 모두 입력하는
아나그램 배열이란?한 배열의 요소들을 임의로 재배열했을 때 다른 배열과 완전히 동일해진다면, 두 배열은 서로의 아나그램(anagram)이라고 합니다.예를 들어 다음과 같습니다.[1, 2, 3]과 [2, 1, 3]은 서로 아나그램 관계입니다.두 배열 arr1과 arr2가 서로 아나그램 관계라고 가정해 봅시다. 이때 필요한 것은 두 배열을 입력받아 arr1과 같은 길이의 새로운 매핑 배열을 반환하는 JavaScript 함수입니다. 이 매핑 배열에는 arr1의 각 요소가 arr2에서 위치한 인덱스 값이 순서대로 담겨야 합니다.입출력 예시
이번 글에서는 오름차순으로 정렬된 세 개의 정수 배열을 입력받아, 세 배열 모두에 존재하는 공통 요소만 담은 새로운 배열을 반환하는 JavaScript 함수를 작성해 보겠습니다.문제 이해하기세 개의 정렬된 배열에서 세 배열 전체에 걸쳐 나타나는 값, 즉 교집합(intersection)을 찾는 것이 목표입니다.예를 들어, 입력 배열이 다음과 같다고 가정해 보겠습니다.const arr1 = [4, 7, 8, 11, 13, 15, 17]; const arr2 = [1, 3, 4, 13, 18]; const arr3 = [2, 4, 7,
문제 개요2차원 평면 위의 네 개의 점이 정사각형을 이루는지 판별하는 JavaScript 함수를 작성해야 합니다. 함수는 네 개의 인수를 받으며, 각 인수는 숫자 두 개로 구성된 배열로서 한 꼭짓점의 x, y 좌표를 나타냅니다. 네 꼭짓점이 정사각형을 형성하면 true, 그렇지 않으면 false를 반환하면 됩니다.예시입력 좌표가 다음과 같다고 가정해 보겠습니다.const c1 = [1, 0]; const c2 = [-1, 0]; const c3 = [0, 1]; const c4 = [0, -1];이때 출력은 다음과 같습니다.cons
이번 글에서는 0과 1만으로 구성된 이진 배열(binary array)을 유일한 인자로 받아, 배열 안에서 1이 연속으로 나타나는 가장 긴 구간의 길이를 반환하는 JavaScript 함수를 작성해 보겠습니다.문제 정의예를 들어 입력 배열이 다음과 같다고 가정해 봅시다.const arr = [1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1];이 배열에서 1이 연속된 구간은 [1], [1, 1, 1], [1], [1, 1, 1, 1], [1]이며, 그중 가장 긴 구간은 마지막에서 두 번째에 위치한 길이 4의 구
문제 개요 숫자 num을 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 먼저 다음 규칙에 따라 n개의 요소로 이루어진 배열을 생성합니다. arr[i] = (2 * i) + 1; 예를 들어 입력 숫자가 5라면 생성되는 배열은 다음과 같습니다. const arr = [1, 3, 5, 7, 9]; 함수의 목표는 배열의 모든 요소를 동일한 값으로 만들기 위해 필요한 최소 연산 횟수를 계산하여 반환하는 것입니다. 연산(단계)의 정의 유효한 한 번의 연산은 다음과 같이 이루어집니다. 배열에서 서로 다른 두 숫자를
정수 배열을 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 원본 배열의 요소 중 자릿수(숫자의 개수)가 짝수인 값만 골라 새로운 배열을 만든 뒤 반환해야 합니다.예를 들어, 입력 배열이 다음과 같다면 −const arr = [12, 6, 123, 3457, 234, 2];출력 결과는 다음과 같아야 합니다.12 → 자릿수 2개 (짝수) ✅6 → 자릿수 1개 (홀수) ❌123 → 자릿수 3개 (홀수) ❌3457 → 자릿수 4개 (짝수) ✅234 → 자릿수 3개 (홀수) ❌2 → 자릿수
문제 소개 여러 명의 학생 정보와 일정 기간 동안 획득한 점수가 담긴 객체 배열이 있다고 가정해 보겠습니다. 각 객체는 학생의 고유 ID(id)와 점수(score)를 포함하고 있으며, 같은 학생이 여러 번 등장할 수 있습니다. const marks = [ { id: 231, score: 34 }, { id: 233, score: 37 }, { id: 231, score: 31 }, { id: 233, score: 39 }, { id: 231, score: 44 }, { id: 233, score: 41 },
정수 배열 arr를 첫 번째 인수로, 그리고 num(배열 길이보다 작은 수)을 두 번째 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 배열 안에서 연속된 num개의 숫자로 이루어진 모든 구간(윈도우)의 평균값을 담은 새로운 배열을 만들어 반환해야 합니다.문제 이해하기예를 들어 입력 배열과 숫자가 다음과 같다고 가정해 보겠습니다.const arr = [1, 2, 3, 4, 5];const num = 2;크기가 2인 연속된 윈도우는 (1, 2), (2, 3), (3, 4), (4, 5)로 총 네 가지이므로, 출력
웹 서비스를 개발하다 보면 사용자가 입력한 비밀번호가 보안 기준을 충족하는지 확인해야 하는 경우가 많습니다. 이번 글에서는 비밀번호 문자열을 유일한 인수로 받아 유효성을 판별하는 JavaScript 함수를 작성해 보겠습니다.함수는 아래 조건을 모두 만족할 때만 true를 반환해야 합니다.길이가 6자 이상 20자 이하일 것숫자를 최소 1개 포함할 것영문 소문자를 최소 1개 포함할 것영문 대문자를 최소 1개 포함할 것특수문자를 최소 1개 포함할 것 (허용되는 특수문자: !@#$%^&*()-+)예제 코드const valid = 12Aat
두 개의 문자열을 각각 첫 번째와 두 번째 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 문자열들을 각각 str1과 str2라고 부르겠습니다.함수의 목표는 str1에서 일부 문자를 선택했을 때, 그 문자들의 순서를 유지하면서 str2를 만들어낼 수 있는지 확인하는 것입니다.여기서 부분 문자열 조합(substring combination)이란 str1의 문자 중 일부를 건너뛸 수는 있지만, 선택된 문자들의 원래 순서는 반드시 지켜야 한다는 의미입니다. 이는 흔히 부분 수열(subsequence)이라고 불리는 개념과 같습