문자열을 입력받아 문자열 끝에 도달할 때까지 인접한 단어들을 서로 맞바꾸는 JavaScript 함수를 작성해야 합니다. 예를 들어 A B C D라는 문자열이 주어지면 B A D C처럼 홀수 번째와 짝수 번째 단어의 위치가 서로 교환됩니다. 예제 이를 구현한 코드는 다음과 같습니다. const str = "This is a sample string only"; const replaceWords = str => { return str.split(" ").reduce((a
JavaScript 프로그래밍을 하다 보면 양수와 음수가 섞여 있는 배열의 모든 숫자 부호를 한 번에 뒤집어야 하는 경우가 있습니다. 예를 들어 양수는 동일한 크기의 음수로, 음수는 동일한 크기의 양수로 변환하는 작업입니다. 이 글에서는 원본 배열을 직접 수정(in-place)하는 방식으로 이 문제를 해결하는 JavaScript 함수를 작성해 보겠습니다.핵심 아이디어숫자의 부호를 반전시키는 가장 간단한 방법은 해당 숫자에 -1을 곱하는 것입니다. 예를 들어 12에 -1을 곱하면 -12가 되고, -43에 -1을 곱하면 43이 됩니다.
프로그래밍 문제나 코딩 테스트에서는 특정한 수학적 성질을 가진 숫자를 판별해야 하는 경우가 종종 있습니다. 이번 글에서는 두 개의 연속된 정수의 곱으로 표현되는 프로닉 수(Pronic Number)를 자바스크립트(JavaScript)로 판별하는 함수를 만들어 보겠습니다. 프로닉 수(Pronic Number)란? 프로닉 수는 두 개의 연속된 정수를 곱했을 때 얻어지는 수를 말합니다. 즉, 다음과 같은 형태로 표현되는 숫자입니다. n(n + 1) 예를 들어 12는 3 × 4의 결과이므로 프로닉 수에 해당합니다. 처음 몇 가지 프로닉
문제 이해하기 두 개의 숫자 배열을 입력받아, 두 배열 중 한쪽에만 존재하고 양쪽에 공통으로 포함되지 않은 요소들을 반환하는 JavaScript 함수를 작성해야 합니다. 수학적으로 말하면 두 배열의 대칭 차집합(symmetric difference)을 구하는 것과 같습니다. 예를 들어 다음과 같은 두 배열이 있다고 가정해 보겠습니다. const arr1 = [2, 4, 2, 4, 6, 4, 3]; const arr2 = [4, 2, 5, 12, 4, 1, 3, 34]; 기대 출력 두 배열 모두에 공통으로 포함된 값은 2, 4, 3입
문제 정의 두 개의 문자열을 인자로 받아, 첫 번째 문자열(main) 안에 두 번째 문자열(sub)이 총 몇 번 등장하는지 그 횟수를 반환하는 JavaScript 함수를 작성해야 합니다. 예를 들어 메인 문자열이 This is the is main is string이고 찾으려는 부분 문자열이 is라면, is는 총 4번 나타나므로 결과값은 4가 되어야 합니다. 정규표현식(RegExp)을 이용한 해결 방법 가장 대표적인 방법은 전역(g) 플래그를 설정한 정규표현식 객체를 만들어 replace() 메서드와 함께 사용하는 것입니다. re
JavaScript에서 하나의 배열을 받아 양수 배열과 음수 배열을 각각 담고 있는 객체를 반환하는 함수를 작성해야 하는 경우가 있습니다. 예를 들어, 숫자들이 섞여 있는 배열이 주어졌을 때 양수만 모은 배열과 음수만 모은 배열로 깔끔하게 나누는 것이죠.이 작업은 Array.prototype.reduce() 메서드를 활용하면 간단하게 해결할 수 있습니다. reduce()는 배열의 각 요소를 순회하면서 누적값(accumulator)을 반환하기 때문에, 순회 과정에서 조건에 맞는 요소들을 객체 내 두 개의 배열에 담아두기에 적합합니다.
문제 상황문자열과 숫자가 혼합된 데이터 타입을 담고 있는 배열이 있을 때, NaN 값이 항상 배열의 맨 뒤에 위치하도록 정렬하는 함수를 작성해야 합니다.정렬된 배열은 다음과 같은 순서를 따라야 합니다.유효한 숫자들이 가장 앞에 위치그다음 문자열 리터럴마지막에 NaN 값들해결 방법JavaScript의 sort() 메서드에 커스텀 비교 함수를 전달하면 이 문제를 해결할 수 있습니다. 핵심은 NaN의 고유한 특성을 활용하는 것입니다. NaN은 자기 자신과도 같지 않다는 특징(NaN !== NaN)이 있기 때문에, 이를 이용해 값이 NaN
문자열과 숫자를 인자로 받는 함수를 작성해야 합니다. 문자열의 길이는 항상 숫자보다 작거나 같다는 조건이 주어집니다. 우리가 해야 할 일은 문자열 끝에 랜덤한 소문자 알파벳을 추가하여 문자열의 길이를 정확히 해당 숫자와 일치시키고, 새로운 문자열을 반환하는 것입니다.문제 접근 방식이 문제는 재귀 함수를 활용하면 간단하게 해결할 수 있습니다. 문자열의 길이가 목표 길이보다 짧다면, 랜덤 소문자 하나를 생성하여 문자열 뒤에 붙인 후 다시 자기 자신을 호출합니다. 길이가 목표에 도달하면 완성된 문자열을 그대로 반환합니다.랜덤 소문자 생성
JavaScript 개발을 하다 보면 두 개의 숫자 배열을 비교하여 첫 번째 배열의 모든 요소가 두 번째 배열에 존재하는지 확인해야 하는 경우가 자주 있습니다. 이 글에서는 map()과 indexOf()를 활용해 이 문제를 해결하는 방법을 소개합니다.접근 방식핵심 아이디어는 다음과 같습니다.첫 번째 배열의 각 요소에 대해 indexOf() 메서드를 사용해 두 번째 배열 내에서의 위치(인덱스)를 찾습니다.요소가 존재하지 않으면 indexOf()는 -1을 반환합니다.따라서 결과 인덱스 배열에 -1이 하나라도 포함되어 있다면, 첫 번째
이번 글에서는 숫자 배열을 입력받아, 원본 배열의 요소를 두 개씩 짝지어 더한 값들로 이루어진 새로운 배열을 반환하는 JavaScript 함수를 작성하는 방법을 알아보겠습니다.문제 이해하기예를 들어, 입력 배열이 다음과 같다고 가정해 보겠습니다.const arr1 = [1, 1, 2, 7, 4, 5, 6, 7, 8, 9];이 경우 기대되는 출력 결과는 다음과 같습니다.const output = [2, 9, 9, 13, 17];결과 배열의 각 요소는 원본 배열에서 인접한 두 요소를 한 쌍으로 묶어 더한 값입니다.1 + 1 = 22 +
이 글에서는 자바스크립트(JavaScript)로 문장 속에서 특정 문자가 총 몇 번 등장하는지 세는 함수를 작성하는 방법을 알아보겠습니다. 구현 예제 아래 코드는 문자열과 찾고자 하는 문자를 인자로 받아, 해당 문자가 나타난 횟수를 반환하는 함수입니다. const string = This is just an example string for the program; const countAppearances = (str, char) => { let count = 0; for(let i
서로소(Co-prime)란? 두 수가 서로소(co-prime)라는 것은 두 수 사이에 공통된 소인수가 하나도 존재하지 않는다는 뜻입니다. 단, 1은 소수가 아니므로 여기에는 포함되지 않습니다. 예를 들어 4와 5는 공통 약수가 1뿐이므로 서로소지만, 21과 57은 공통 약수 3을 함께 가지고 있으므로 서로소가 아닙니다. 이번 글에서는 두 개의 숫자를 인자로 받아 서로소 관계이면 true, 그렇지 않으면 false를 반환하는 함수를 JavaScript로 작성해 보겠습니다. 구현 예제 아래 코드는 2부터 두 수 중 큰 값 미만까지의 정
이 글에서는 자바스크립트(JavaScript)에서 재귀(recursion) 기법을 활용해 특정 숫자 n의 팩토리얼(Factorial, 계승)을 계산하는 함수를 작성하는 방법을 알아봅니다.재귀란 무엇인가?재귀는 함수가 자기 자신을 다시 호출하는 프로그래밍 기법입니다. 팩토리얼은 n! = n × (n-1) × (n-2) × … × 1로 정의되며, n! = n × (n-1)!이라는 수학적 성질을 가지고 있기 때문에 재귀로 구현하기에 아주 적합한 문제입니다.코드 예제아래 코드는 재귀 방식으로 팩토리얼을 계산하는 함수입니다.const num
JavaScript에서 숫자 배열이 주어졌을 때, 연속된 음수들이 하나의 그룹(클러스터)을 이루는 횟수를 세야 하는 경우가 있습니다. 예를 들어 다음과 같은 배열이 있다고 가정해 보겠습니다.const arr = [-1,-2,-1,0,-1,-2,-1,-2,-1,0,1,0];위 배열에서 음수 덩어리는 두 군데 존재합니다. 첫 번째는 -1,-2,-1로 이루어진 그룹, 두 번째는 -1,-2,-1,-2,-1로 이루어진 그룹입니다. 즉, 우리가 작성해야 할 함수는 이처럼 음수끼리 연속된 그룹의 개수를 반환해야 합니다.해결 접근 방식가장 깔끔한
이번 글에서는 하나의 숫자를 입력받아, 짝수 번째 자리에 있는 자릿수들의 합과 홀수 번째 자리에 있는 자릿수들의 합 사이의 차이를 반환하는 JavaScript 함수를 작성하는 방법을 알아보겠습니다.문제 이해하기예를 들어 숫자 123456이 주어졌다고 가정해 봅시다. 오른쪽 끝자리부터 세었을 때, 짝수 번째(0번째, 2번째, 4번째) 자릿수는 6, 4, 2이고 그 합은 12입니다. 홀수 번째(1번째, 3번째, 5번째) 자릿수는 5, 3, 1이고 그 합은 9입니다. 따라서 두 합의 차이는 |12 − 9| = 3이 됩니다.접근 방법이 문
배열 리터럴을 인자로 받아, 그 배열 안에서 가장 많이 등장하는 요소가 몇 번 나타나는지 그 횟수를 반환하는 JavaScript 함수를 작성해야 합니다.예를 들어 다음과 같은 배열이 주어졌다고 가정해 보겠습니다.let arr = [2, 8, 4, 8, 6, 4, 7, 8];이 배열에서 가장 자주 등장하는 값은 8이며 총 3번 나타나므로, 함수는 3을 반환해야 합니다.예제 코드reduce() 메서드로 각 요소의 등장 횟수를 객체에 집계한 뒤, Math.max()로 그중 최댓값을 구하는 방식으로 문제를 해결할 수 있습니다.let arr
두 개의 배열이 있다고 가정해 보겠습니다. 첫 번째 배열에는 여러 이벤트의 예정된 날짜가 담겨 있고, 두 번째 배열에는 그 이벤트들의 이름이 담겨 있습니다. const dates = [ { id:1, date:2017-11-07 }, { id:1, date:2017-11-08 }, { id:2, date:2017-11-07 }, { id:2, date:2017-11-0
좌표 배열이 다음과 같이 주어져 있다고 가정해 보겠습니다.const arr = [ [-73.9280684530257, 40.8099975343718], [-73.9282820374729, 40.8100875554645], [-73.9280124002104, 40.8103130893677], [-73.927875543761, 40.8102554080229], [-73.9280684530257, 40.8099975343718] ];여기서 각 하위 배열은 2차원 평면 위의 한 점을 나타내며, 이 점들은
문제 상황다음과 같이 여러 단계로 중첩된 JSON 객체가 있다고 가정해 보겠습니다.const obj = { a: { someKey: { propOne: , enabled: true } }, b: { someKey: { propOne: , enabled: false } }, c: { someKey: { propOne: ,
이번 글에서는 첫 번째 인수로 문자열을, 두 번째 인수로 숫자 배열을 받아서, 배열 요소가 가리키는 인덱스 위치의 모든 문자를 별표(*)로 대체하는 JavaScript 함수를 작성하는 방법을 알아보겠습니다.구현 아이디어핵심 로직은 크게 세 단계로 나눌 수 있습니다.split() 메서드로 문자열을 개별 문자의 배열로 변환합니다.reduce() 메서드를 사용해 두 번째 인수로 전달받은 인덱스 배열을 순회하며, 해당 위치의 문자를 *로 교체합니다.join() 메서드로 다시 하나의 문자열로 합쳐 반환합니다.예제 코드실제 동작하는 코드는 다