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

JavaScript

  1. JavaScript로 배열에서 연속 반복 없이 나타나는 첫 번째 요소의 인덱스 찾기

    대부분의 항목이 연속해서 반복되는 숫자 또는 문자열 리터럴 배열이 주어졌을 때, 우리는 이 배열을 입력받아 연속적으로 나타나지 않는 첫 번째 요소의 인덱스를 반환하는 함수를 작성해야 합니다. 만약 배열에 해당하는 요소가 존재하지 않는다면 함수는 -1을 반환해야 합니다. 이제 이 함수의 코드를 작성해 보겠습니다. 간단한 루프를 사용해 배열을 순회하며 조건에 맞는 요소를 발견하면 즉시 인덱스를 반환하고, 끝까지 찾지 못하면 -1을 반환합니다. 예시 const arr = [d, d, e, e, e, k, j, j, h]; const f

  2. JavaScript 배열에서 가장 큰 두 요소를 한 번의 순회로 찾는 방법

    정렬되지 않은 숫자 배열이 주어졌을 때, 이 배열에서 가장 큰 두 요소(최댓값 두 개)를 추출하여 새로운 배열로 반환하는 함수를 작성하는 것이 목표입니다.여기서 중요한 조건은 단 한 번의 순회(one pass), 즉 선형 시간(O(n)) 안에 작업을 완료해야 한다는 점입니다. for 반복문을 하나만 사용하거나, ES6 메서드를 활용할 경우에도 중첩된 호출 없이 단일 메서드만 사용하여 시간 복잡도가 증가하지 않도록 해야 합니다.이 문제는 Array.prototype.reduce() 메서드를 활용하면 깔끔하게 해결할 수 있습니다. re

  3. JavaScript로 정렬된 배열에서 부분 배열의 합으로 표현할 수 없는 가장 작은 양의 정수 찾기

    문제 개요 다음과 같이 양의 정수로 이루어진 정렬된 배열이 있다고 가정해 보겠습니다. const arr = [1, 3, 6, 10, 11, 15]; 우리는 이러한 배열을 입력받아, 원본 배열의 어떤 부분 배열(subarray)의 합으로도 표현할 수 없는 가장 작은 양의 정수를 반환하는 함수 findSmallest()를 작성해야 합니다. 예시 위 배열의 경우, 원본 배열의 어떤 부분 배열을 더하더라도 만들 수 없는 가장 작은 양의 정수는 2입니다. 1은 단독으로 표현할 수 있지만, 2는 그 어떤 조합으로도 만들 수 없기 때문입니

  4. JavaScript에서 두 배열을 비교해 공통 요소 개수를 확인하고 백분율 계산하기

    문제 상황두 개의 배열이 있다고 가정해 보겠습니다. 하나는 특정 문제들의 정답 문자열을 담고 있고, 다른 하나는 응시자가 제출한 답변들을 담고 있습니다. 그런데 어떤 이유로 인해 배열의 순서가 뒤섞여서 정답과 답변이 서로 대응되지 않는 상황입니다. 다만, 어떤 두 문제도 같은 답을 가진 적은 없다는 점은 확실합니다.따라서 우리의 과제는 다음과 같습니다. 두 배열을 인자로 받아 공통 요소를 검사하고, 두 배열 사이의 모든 공통 요소를 찾아낸 뒤, 일치하는 답변의 개수를 바탕으로 응시자의 득점 백분율을 계산하는 함수를 작성하는 것입니다

  5. JavaScript로 숫자 n을 입력받아 처음 n개의 소수 배열 생성하는 방법

    JavaScript에서 숫자 n을 인자로 받아, 가장 작은 소수부터 차례대로 n개의 소수를 담은 배열을 반환하는 함수를 작성해 보겠습니다. 소수란 무엇인가? 소수(素數)는 1과 자기 자신 외에는 어떤 수로도 나누어 떨어지지 않는 2 이상의 자연수입니다. 예를 들어 2, 3, 19, 37, 73 등이 대표적인 소수이며, 4나 6처럼 다른 약수를 함께 가지는 수는 합성수라고 부릅니다. 구현 아이디어 가장 직관적인 접근 방식은 문제를 두 단계로 나누는 것입니다. 소수 판별 함수 작성: 주어진 숫자가 소수인지 확인하는 isPrime

  6. 자바스크립트로 숫자가 피보나치 수인지 확인하는 방법

    이번 글에서는 숫자를 입력받아 해당 숫자가 피보나치 수열에 포함되어 있는지 여부를 불리언(Boolean) 값으로 반환하는 자바스크립트 함수를 작성해 보겠습니다.문제 정의함수는 하나의 숫자를 매개변수로 받으며, 그 숫자가 피보나치 수열에 속하면 true, 속하지 않으면 false를 반환해야 합니다.예를 들어 다음과 같이 함수를 호출한다면,fibonacci(12);fibonacci(89);fibonacci(55);fibonacci(534);출력 결과는 다음과 같아야 합니다.falsetruetruefalse재귀 함수를 활용한 해결 방법피

  7. 추가 변수 없이 JavaScript 재귀 함수로 배열의 모든 요소 합계 구하기

    숫자 배열의 모든 요소를 합산하는 재귀 함수를 작성해야 한다고 가정해 봅시다. 그런데 여기에 조건이 하나 있습니다. 바로 작성하는 재귀 함수가 어떠한 추가 변수(메모리)도 초기화할 수 없다는 점입니다.즉, 합계를 저장하거나 배열의 인덱스를 카운트하기 위한 변수를 사용할 수 없으며, 이미 가지고 있는 것만으로 문제를 해결해야 합니다.해결 방법핵심 아이디어는 간단합니다. 우리에게는 이미 배열이 있으므로, 배열의 첫 번째 요소(0번 인덱스의 요소)를 재귀 합계를 담는 저장 공간으로 활용하면 됩니다.접근 방식은 다음과 같습니다.배열에서 요

  8. JavaScript로 2차원 배열 다루기: 각 하위 배열의 합계를 담은 새 배열 반환하기

    문제 개요숫자들로 이루어진 여러 개의 하위 배열을 포함하는 배열(2차원 배열)이 주어졌을 때, 새로운 배열의 각 요소가 해당 하위 배열에 있는 모든 숫자의 합계가 되도록 하는 함수를 작성해야 합니다.예를 들어, 입력 배열이 다음과 같다면 −const numbers = [     [1, 2, 3, 4],     [5, 6, 7],     [8, 9, 10, 11, 12] ];함수의 출력 결과는 다음과 같아야 합니다 &

  9. JavaScript while 루프로 연속 숫자의 가장 긴 부분 배열 길이 구하기

    양의 정수로 이루어진 배열에서 연속적으로 증가하는 숫자들로 구성된 가장 긴 부분 배열의 길이를 구하는 함수를 while 문을 사용해 작성해 보겠습니다.문제 이해하기배열 내에서 값이 1씩 연속해서 증가하는 구간 중 가장 긴 구간의 길이를 반환하면 됩니다.예를 들어, 입력 배열이 다음과 같다면 −const input = [6, 7, 8, 6, 12, 1, 2, 3, 4] --> [1,2,3,4]연속된 숫자 구간은 [1, 2, 3, 4]가 가장 길므로 출력 결과는 다음과 같습니다.4또 다른 예시로, 입력 배열이 다음과 같

  10. JavaScript로 앞으로 n년간의 윤년 찾기

    이번 글에서는 양의 정수 n을 입력받아 앞으로 다가올 윤년 n개를 배열로 반환하는 함수를 작성해 보겠습니다. 이 문제는 크게 세 단계로 나누어 해결할 수 있습니다.1단계: JavaScript로 현재 연도 구하기먼저 Date 객체의 새 인스턴스를 생성하여 현재 연도를 구합니다.// Date 객체의 새 인스턴스에서 현재 연도 가져오기 const year = new Date().getFullYear();2단계: 윤년 여부 확인하기다음으로 숫자를 입력받아 해당 연도가 윤년인지 아닌지에 따라 불리언 값을 반환하는 isLeap() 함수를 작성

  11. JavaScript 역합(Reverse Sum) 배열 구현하기 – 두 배열의 요소를 반대 방향으로 더하는 방법

    이번 글에서는 reverseSum()이라는 함수를 작성해 보겠습니다. 이 함수는 숫자로 이루어진 배열 두 개(예: first와 second)를 인자로 받아, 다음과 같은 규칙에 따라 새로운 배열을 생성하여 반환합니다.첫 번째 요소는 첫 번째 배열의 첫 번째 요소와 두 번째 배열의 마지막 요소의 합입니다.두 번째 요소는 첫 번째 배열의 두 번째 요소와 두 번째 배열의 뒤에서 두 번째 요소의 합이며, 이후에도 같은 방식으로 진행됩니다.만약 한쪽 배열의 요소가 먼저 소진되면, 나머지 배열의 남은 요소들은 그대로 결과 배열에 순서대로 추가

  12. JavaScript 중첩 배열의 거짓값(falsy)을 0으로 바꾸는 재귀 함수 구현하기

    JavaScript에서 중첩 배열(nested array)은 배열 안에 또 다른 배열이 포함된 구조를 말합니다. 이런 구조를 다룰 때는 일반적인 반복문만으로는 부족하기 때문에 재귀 함수(recursive function)를 활용하는 것이 효과적입니다.문제 상황예를 들어, 다음과 같이 배열 안에 배열이 여러 겹으로 중첩되어 있는 데이터가 있다고 가정해 보겠습니다.const arr = [3, 5, 7, 2, [4, NaN, null, 4, 8, [3, undefined, 24, null], null, 5, 1], NaN, 45, 2,

  13. 자바스크립트(JavaScript)로 가장 가까운 회문 찾기

    숫자 n을 입력받아 해당 숫자와 가장 가까운 회문(palindrome)을 반환하는 함수 nearestPalindrome()을 작성해야 합니다. 회문이란 앞에서 읽으나 뒤에서 읽으나 같은 숫자나 문자열을 의미합니다.예시입력 숫자가 264라면 출력은 262가 되어야 합니다.입력 숫자가 7834라면 출력은 7887이 되어야 합니다.접근 방식기본적인 아이디어는 다음과 같습니다. 숫자를 문자열로 변환한 뒤 길이를 기준으로 두 부분으로 나누고, 앞쪽 절반을 뒤집어 뒤에 이어 붙여 새로운 회문을 만듭니다. 즉, 왼쪽 절반을 오른쪽에 거울처럼 반

  14. JavaScript 배열의 마지막 n개 요소를 맨 앞으로 이동하는 방법

    배열의 마지막 요소들을 맨 앞으로 옮겨야 하는 상황을 생각해 봅시다. 예를 들어 prependN()이라는 배열 함수를 작성한다고 가정해 보겠습니다. 이 함수는 숫자 n(n은 해당 배열의 길이보다 작거나 같아야 함)을 인자로 받아, 배열 끝에서 n개의 요소를 잘라내어 배열의 맨 앞으로 이동시킵니다.여기서 중요한 조건은 두 가지입니다. 첫째, 원본 배열 자체를 직접 변경(in-place)해야 하고, 둘째, 함수는 작업 성공 여부에 따라 불리언 값만 반환해야 합니다.예시로 이해하기// 입력 배열이 다음과 같을 때: const arr =

  15. JavaScript로 문자열에서 연속 반복되는 최대 문자 개수 구하는 방법

    다음과 같이 반복되는 문자가 포함된 문자열이 있다고 가정해 보겠습니다.const a = fdsfjngjkdsfhhhhhhhhhhhfsdfsd;우리가 작성해야 할 함수는 문자열에서 같은 문자가 연속으로 나타나는 최대 횟수를 반환하는 함수입니다. 위 문자열에서는 문자 h가 연속으로 11번 나타나기 때문에, 이 문자열에 대해 함수는 11을 반환해야 합니다.슬라이딩 윈도우(Sliding Window) 알고리즘 접근법이 문제는 슬라이딩 윈도우 알고리즘을 적용하기에 아주 적합한 유형입니다. 여기서 안정적인(stable) 윈도우란 동일한 문자만

  16. 정렬 없이 JavaScript 배열에서 두 번째 최솟값 구하는 방법

    숫자로 이루어진 배열이 주어졌을 때, 배열을 정렬하지 않고 두 번째로 작은 값을 반환하는 함수를 작성해야 하는 경우가 종종 있습니다. 이 글에서는 그 해결 방법을 단계별로 살펴보겠습니다. 문제 이해하기 예를 들어, 다음과 같은 배열이 있다고 가정해 보겠습니다: const arr = [67, 87, 56, 8, 56, 78, 54, 67, 98, 56, 54]; 이 배열에서 두 번째로 작은 값을 구하면 결과는 다음과 같아야 합니다: 54 그 이유는 배열에서 가장 작은 값이 8이고, 그다음으로 작은 값이 54이기 때문입니다. 접근 방법

  17. JavaScript 배열 합계 성능 비교: 재귀 vs for 루프 vs ES6 메서드

    개요 수많은 숫자 항목을 담고 있는 배열이 있을 때, 배열의 모든 요소를 합산하는 데 걸리는 시간을 세 가지 방식으로 비교해 보겠습니다. 바로 재귀(recursion), for 루프, 그리고 ES6 함수(reduce())입니다. 실제로 거대한 배열을 만드는 대신, 비교적 작은 배열을 약 1억 번(100,000,000회) 반복 실행하여 대용량 데이터 처리 상황을 시뮬레이션합니다. 목표는 각 방식이 배열 합산에 소요하는 시간의 대략적인 비율을 파악하는 것입니다. 방법 1: 재귀 접근 방식 재귀 함수는 자기 자신을 호출하며 배열을 순회합

  18. JavaScript 배열에서 가장 많이 반복되는 항목 찾는 방법

    문제 소개숫자나 문자열 리터럴로 이루어진 배열이 있고, 그중 일부 값은 중복되어 있다고 가정해 보겠습니다. 이번 글에서는 배열 안에서 가장 많이 등장하는 요소를 반환하는 함수를 작성하는 방법을 알아보겠습니다.예를 들어 입력 배열이 다음과 같다면,const input = [a, v, k, f, a, f, s, d, d, f, a, j, a];출력 결과는 다음과 같아야 합니다.a그 이유는 a가 배열에서 총 4번으로 가장 많이 반복되기 때문입니다.Map()을 활용한 해결 방법이 문제는 Map() 객체를 활용하면 깔끔하게 해결할 수 있습니

  19. JavaScript로 두 객체의 유사도 비교하기 – 0~100 사이 백분율 값을 반환하는 함수 만들기

    두 객체의 유사도를 백분율로 계산하는 방법다음과 같은 두 개의 객체가 있다고 가정해 보겠습니다.const a = { Make: Apple, Model: iPad, hasScreen: yes, Review: Great product!, }; const b = { Make: Apple, Model: iPad, waterResistant: false };여기서 우리가 작성해야 할 함수는 두 객체에서 공통 속성(키와 값이 모두 동일한 경우)의 개수를 세어, 두 객체 간의 유사도를 나타내는

  20. 자바스크립트로 푸는 셜록 배열 문제: 왼쪽 합과 오른쪽 합이 같은 균형점 찾기

    왓슨은 셜록에게 길이가 N인 배열 A를 하나 건네줍니다. 그리고 이 배열 안에서 어떤 요소를 기준으로 왼쪽 요소들의 합과 오른쪽 요소들의 합이 서로 같아지는 지점이 존재하는지 판별해 보라고 요청합니다. 흔히 셜록 배열(Sherlock and Array) 또는 균형점 찾기라 불리는 대표적인 배열 알고리즘 문제입니다.우리는 이 동작을 수행하는 함수를 작성해야 하며, 함수는 다음 조건을 만족해야 합니다.숫자 배열을 인수로 받습니다.조건을 만족하는 요소가 존재하면 해당 요소의 인덱스를 반환합니다.조건을 만족하는 요소가 없으면 -1을 반환합

Total 5929 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:114/297  20-컴퓨터/Page Goto:1 108 109 110 111 112 113 114 115 116 117 118 119 120