Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript

  1. JavaScript 배열에서 누락된 숫자 찾기 – 선형 시간·상수 공간 알고리즘

    문제 정의길이가 n인 숫자 배열이 주어졌다고 가정해 보겠습니다. 이 배열에는 0부터 n까지의 모든 정수가 들어 있지만, 단 하나의 숫자가 누락되어 있습니다. 누락된 숫자는 어떤 값이든 가능하며, 배열은 정렬되어 있지 않습니다. 우리가 작성할 JavaScript 함수는 이 누락된 숫자를 찾아 반환해야 하며, 선형 시간(O(n))과 상수 공간(O(1))이라는 제약 조건 안에서 동작해야 합니다.접근 방식: 등차수열 합 공식 활용배열에 0부터 n까지의 숫자가 하나씩 들어 있고 그중 하나만 비어 있다는 점이 핵심 힌트입니다. 이 성질을 활용

  2. JavaScript로 풀어보는 유사한 문자열 그룹(Similar String Groups) 문제

    이번 글에서는 JavaScript를 활용해 유사한 문자열 그룹 문제를 해결하는 방법을 살펴보겠습니다.문제 정의두 문자열 str1과 str2는 str1에서 서로 다른 위치에 있는 두 글자를 한 번 교환했을 때 str2와 같아질 수 있다면 유사(similar)하다고 정의합니다. 또한 두 문자열이 완전히 동일한 경우에도 유사한 것으로 간주합니다.예를 들어, tars와 rats는 0번째와 2번째 위치의 글자를 서로 바꾸면 같아지므로 유사합니다. 마찬가지로 rats와 arts도 유사하지만, star는 tars, rats, arts 어느 것과

  3. JavaScript에서 숫자 배열을 평균이 같은 두 그룹으로 나누는 방법

    문제 소개정수로 이루어진 배열을 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다.이 함수는 입력 배열의 요소들을 두 그룹으로 나누었을 때(두 그룹의 요소 개수는 같아도 되고 달라도 됩니다), 두 그룹의 평균이 정확히 동일해지는 조합이 존재하는지 판별해야 합니다. 만약 그러한 조합이 존재하면 true를 반환하고, 존재하지 않으면 false를 반환해야 합니다.예시입력 배열이 다음과 같다고 가정해 보겠습니다.const arr = [6, 3, 2, 8, 1, 5, 7, 4];이때 기대되는 출력은 다음과 같습니다.

  4. JavaScript로 특정 범위 내 암스트롱 수(Armstrong Number) 찾는 방법

    암스트롱 수(Armstrong Number)란, 양의 정수의 각 자릿수를 자릿수의 개수(n)만큼 거듭제곱한 값들을 모두 더했을 때 그 합이 원래 수와 같아지는 수를 말합니다.abcd... = a^n + b^n + c^n + d^n + ...예를 들어 153은 세 자리 수이며, 1³ + 5³ + 3³ = 1 + 125 + 27 = 153이므로 암스트롱 수에 해당합니다.문제 정의정확히 두 개의 숫자를 요소로 가지는 배열, 즉 범위를 나타내는 배열을 입력받는 JavaScript 함수를 작성해야 합니다. 이 함수는 해당 범위 안에 속한 모

  5. JavaScript로 서로 다른 인덱스에 있는 동일한 요소 쌍 개수 세기

    문제 이해하기정수로 이루어진 배열을 첫 번째이자 유일한 인수로 받아 처리하는 JavaScript 함수를 작성해야 합니다. 이 함수의 목표는 값은 서로 같지만 위치(인덱스)가 다른 요소 쌍의 총 개수를 계산하는 것입니다.예를 들어, 입력 배열이 다음과 같다고 가정해 보겠습니다.const arr = [7, 9, 5, 7, 7, 5];이 경우 기대되는 출력값은 다음과 같습니다.const output = 4;그 이유는 조건에 부합하는 쌍이 [7, 7], [7, 7], [7, 7], [5, 5]로 총 4개이기 때문입니다. 숫자 7은 세 번

  6. JavaScript로 숫자 자릿수의 곱과 합의 차이 구하기

    이번 글에서는 양의 정수 하나를 인자로 받아, 그 숫자의 각 자릿수를 곱한 값과 더한 값의 차이(절댓값)를 반환하는 JavaScript 함수를 작성해 보겠습니다.문제 이해하기함수는 다음 순서로 동작해야 합니다.1. 입력받은 숫자의 각 자릿수의 합을 구합니다.2. 각 자릿수의 곱을 구합니다.3. 곱과 합의 차이를 절댓값으로 반환합니다.예시입력 숫자가 다음과 같다고 가정해 보겠습니다.const num = 12345;각 자릿수의 합은 1 + 2 + 3 + 4 + 5 = 15이고, 곱은 1 × 2 × 3 × 4 × 5 = 120입니다. 따

  7. JavaScript에서 고유한 문자가 정확히 하나인 부분 문자열 개수 세기

    문자열을 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수의 과제는 입력 문자열에서 고유한 문자가 정확히 하나뿐인 연속된 부분 문자열을 모두 찾아 개수를 세는 것입니다.함수는 조건을 만족하는 부분 문자열의 총 개수를 반환해야 합니다.예시예를 들어, 입력 문자열이 다음과 같다고 가정해 보겠습니다.const str = iiiji;이때 기대하는 출력은 다음과 같습니다.const output = 8;그 이유는 조건에 맞는 문자열이 다음과 같기 때문입니다.iii, i, i, i, i, j, ii, ii접근 방식이 문제

  8. JavaScript 두 포인터 기법으로 교차 정렬 구현하기: 최댓값·최솟값을 번갈아 배치하는 알고리즘

    오름차순으로 이미 정렬된 정수 배열이 있다고 가정해 봅시다. 이때 자바스크립트 내장 메서드인 Array.prototype.sort()를 사용하지 않고, 아래와 같은 규칙에 따라 배열을 재배열하는 함수를 작성해야 합니다.첫 번째 요소는 최댓값두 번째 요소는 최솟값세 번째 요소는 두 번째로 큰 값네 번째 요소는 두 번째로 작은 값이후에도 같은 방식으로 큰 값과 작은 값을 번갈아 배치문제 예시입력 배열이 다음과 같다면,const arr = [1, 2, 3, 4, 5, 6];출력 결과는 아래와 같아야 합니다.const output = [6

  9. JavaScript로 문자 행렬에서 단어 찾기: DFS 백트래킹 풀이

    이번 글에서는 첫 번째 인수로 문자들이 담긴 2차원 배열(행렬)을, 두 번째 인수로 하나의 문자열을 받는 JavaScript 함수를 작성하는 방법을 살펴봅니다.함수는 행렬에 포함된 문자들 중에서 같은 칸을 두 번 이상 사용하지 않고 상하좌우로 인접한 칸을 순서대로 연결했을 때, 두 번째 인수로 전달된 문자열과 정확히 일치하는 경로가 존재하는지 판별해야 합니다.그러한 조합이 하나라도 존재하면 true를, 존재하지 않으면 false를 반환합니다.문제 예시입력 행렬과 찾고자 하는 문자열이 다음과 같다고 가정해 보겠습니다.const arr

  10. JavaScript로 배열의 모든 부분 집합(하위 배열) 구하는 방법

    문제 정의 리터럴 값으로 이루어진 배열을 첫 번째이자 유일한 인수로 받아, 원본 배열의 요소로 만들 수 있는 모든 가능한 하위 배열(부분 집합)을 담은 배열을 생성해 반환하는 JavaScript 함수를 작성해야 합니다. 예를 들어 입력 배열이 다음과 같다면, const arr = [1, 2, 3]; 출력은 다음과 같아야 합니다. const output = [ [2], [1], [3], [1,2,3], [2,3], [1,2], [1, 3], [] ]; 참고로 하위 배열이 출력되

  11. JavaScript로 배열에서 가장 긴 연속 숫자 시퀀스의 길이 구하기

    이번 글에서는 정수 배열을 인자로 받아, 배열 안에 존재하는 가장 긴 연속 숫자 시퀀스의 길이를 찾아 반환하는 JavaScript 함수를 작성해 보겠습니다. 여기서 말하는 연속 시퀀스란 값이 1씩 증가하는 숫자들의 집합을 의미하며, 배열 내에서 서로 붙어 있지 않아도 괜찮습니다(비연속적 위치 허용). 문제 예시 입력 배열이 다음과 같다고 가정해 보겠습니다. const arr = [4, 6, 9, 1, 2, 8, 5, 3, -1]; 이 배열에는 1, 2, 3, 4, 5, 6으로 이어지는 시퀀스가 있으며, 이것이 가장 긴 연속

  12. JavaScript로 최대 곱을 갖는 연속 부분 배열 찾기

    문제 소개이번 글에서는 정수 배열(양수와 음수 모두 포함)을 인자로 받아, 그중 곱이 최대가 되는 연속 부분 배열(subarray)의 곱을 계산하여 반환하는 JavaScript 함수를 작성해 보겠습니다.예를 들어 입력 배열이 다음과 같다고 가정해 봅시다.const arr = [4, -5, 2, -3, 1, -4, 0, -3];이 경우 기대되는 출력값은 다음과 같습니다.const output = 120그 이유는 곱이 가장 커지는 부분 배열이 바로 [4, -5, 2, -3]이고, 실제 곱을 계산하면 4 × (-5) × 2 × (-3)

  13. 자바스크립트로 회전된 정렬 배열에서 최솟값 찾는 방법 (이진 탐색 활용)

    문제 개요 정수 배열을 유일한 인수로 받아 처리하는 자바스크립트 함수를 작성해야 합니다. 이 배열은 처음에 오름차순으로 정렬된 상태였다가, 임의의 횟수만큼 회전(rotate)된 형태입니다. 우리가 만들 함수는 이 배열에서 가장 작은 요소를 찾아 반환해야 합니다. 여기서 중요한 조건은 선형 시간 복잡도(O(n))보다 빠른 속도, 즉 O(log n) 시간 안에 문제를 해결해야 한다는 점입니다. 이를 위해서는 기본적인 이진 탐색(Binary Search) 알고리즘을 약간 변형하여 사용하는 것이 효과적입니다. 예시 입력 배열이 다음과 같다

  14. JavaScript로 인접 요소보다 큰 요소(피크 요소) 찾기

    문제 정의숫자 배열을 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다.이 함수는 배열에서 바로 왼쪽에 있는 숫자와 바로 오른쪽에 있는 숫자보다 모두 큰 요소를 찾아 반환해야 합니다. 이러한 조건을 만족하는 요소를 흔히 피크(peak) 요소라고 부릅니다. 만약 배열에 해당하는 요소가 여러 개 존재한다면, 그중 어떤 하나를 반환해도 무방합니다.예를 들어 다음과 같은 입력 배열이 주어졌다고 가정해 보겠습니다.const arr = [3, 6, 7, 9, 8, 2, 5];이 경우 기대되는 출력은 다음과 같습니다.c

  15. JavaScript로 문장에서 뒤에서 두 번째 단어의 길이 구하기

    문장(sentence)이란 공백으로 구분된 여러 단어들이 하나로 연결된 문자열을 의미합니다. 이번 글에서는 문장 문자열을 입력받아 뒤에서 두 번째 단어의 글자 수를 세는 JavaScript 함수를 작성해 보겠습니다. 만약 문자열에 포함된 단어가 2개 이하라면 함수는 0을 반환하도록 처리합니다.문제 이해하기예를 들어, 입력 문자열이 다음과 같다고 가정해 보겠습니다.const str = this is an example string;이 경우 기대되는 출력값은 다음과 같습니다.const output = 7;example이라는 단어가 정확

  16. JavaScript 정렬된 배열에서 합이 목표값과 일치하는 두 숫자 찾기 — 투 포인터(Two Pointer) 기법

    코딩 테스트나 알고리즘 문제에서 자주 등장하는 대표적인 문제 중 하나가 정렬된 배열에서 두 숫자의 합 찾기입니다. 오름차순으로 정렬된 정수 배열과 목표 합계(target) 값이 주어졌을 때, 배열 안에서 서로 더했을 때 목표값이 되는 두 숫자를 찾아야 합니다.단, 이 문제의 핵심 조건은 다음과 같습니다.시간 복잡도는 O(n) — 선형 시간(Linear Time) 내에 해결해야 합니다.공간 복잡도는 O(1) — 추가 메모리 없이 상수 공간(Constant Space)만 사용해야 합니다.배열이 이미 정렬되어 있다는 점이 바로 힌트입니다

  17. JavaScript로 문자열에서 첫 번째 비반복(고유) 문자의 인덱스 찾기

    JavaScript에서 문자열을 첫 번째이자 유일한 인수로 받는 함수를 작성해야 합니다.이 함수는 문자열을 앞에서부터 탐색하면서 단 한 번만 등장하는 첫 번째 문자를 찾고, 그 문자의 인덱스를 반환해야 합니다.만약 문자열에 고유한 문자가 하나도 없다면, 함수는 -1을 반환해야 합니다.문제 예시예를 들어, 입력 문자열이 다음과 같다고 가정해 보겠습니다.const str = hellohe;여기서 h는 인덱스 0과 5에, e는 인덱스 1과 6에, l은 인덱스 2와 3에 각각 두 번 등장합니다. 반면 o는 인덱스 4에 단 한 번만 나타나므

  18. JavaScript에서 문자열로 표현된 두 숫자를 변환 없이 더하는 방법

    두 개의 숫자를 나타내는 문자열 str1과 str2를 인수로 받는 JavaScript 함수를 작성해야 합니다.여기서 중요한 조건은 문자열 전체를 숫자(Number)로 변환하지 않고도 두 수의 합을 계산해야 한다는 점입니다. 최종 결과 역시 문자열 형태로 반환해야 합니다.문제 예시예를 들어, 다음과 같은 두 개의 문자열이 주어졌다고 가정해 보겠습니다.const str1 = 234; const str2 = 129;이 경우 함수는 다음과 같은 결과를 반환해야 합니다.363접근 방식: 자릿수별 덧셈사람이 손으로 덧셈을 하는 방식을 그대로

  19. JavaScript로 배열 합을 특정 수로 나눌 수 있게 만드는 최소 길이의 하위 배열 제거하기

    JavaScript에서 양의 정수로 이루어진 배열과 하나의 양의 정수를 인수로 받는 함수를 작성해야 합니다.이 함수의 목표는 배열 전체의 합이 두 번째 인수로 전달된 숫자로 나누어 떨어지도록 만들기 위해, 원본 배열에서 제거해야 하는 가장 짧은 연속 하위 배열(subarray)의 길이를 구해 반환하는 것입니다.문제 예시예를 들어, 입력이 다음과 같다고 가정해 보겠습니다.const arr = [3, 8, 2, 6]; const num = 9;배열 전체의 합은 3 + 8 + 2 + 6 = 19이며, 19를 9로 나누면 나머지가 1이 됩

  20. JavaScript로 n번 이상 반복되는 문자를 포함한 가장 긴 부분 문자열 찾기

    JavaScript에서 문자열과 양의 정수 n을 인자로 받아, 문자열 내 모든 문자가 최소 n번 이상 등장하는 가장 긴 부분 문자열(substring)의 길이를 구하는 함수를 작성하는 방법을 알아보겠습니다. 문제 이해하기 주어진 문자열에는 반복되는 문자들이 포함될 수 있습니다. 우리가 구해야 하는 것은 원본 문자열의 부분 문자열 중에서, 포함된 모든 문자가 각각 최소 n번 이상 나타나는 부분 문자열의 최대 길이입니다. 예를 들어 입력이 다음과 같다고 가정해 보겠습니다. const str = kdkddj;const num = 2; 이

Total 5929 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:34/297  20-컴퓨터/Page Goto:1 28 29 30 31 32 33 34 35 36 37 38 39 40