소개
이 랩에서는 기본적인 기술을 구축하는 데 도움이 되도록 설계된 일련의 연습을 통해 JavaScript 프로그래밍을 탐구할 것입니다. 기본 구문 및 데이터 유형부터 비동기 프로그래밍 및 함수형 프로그래밍과 같은 더 고급 개념까지, 이 랩은 숙련된 JavaScript 개발자가 되는 데 도움이 되는 실질적인 경험을 제공할 것입니다. 프로그래밍을 처음 접하거나 기술을 확장하려는 경우, 이 랩은 성공하는 데 필요한 도구를 제공합니다.
이 랩에서는 기본적인 기술을 구축하는 데 도움이 되도록 설계된 일련의 연습을 통해 JavaScript 프로그래밍을 탐구할 것입니다. 기본 구문 및 데이터 유형부터 비동기 프로그래밍 및 함수형 프로그래밍과 같은 더 고급 개념까지, 이 랩은 숙련된 JavaScript 개발자가 되는 데 도움이 되는 실질적인 경험을 제공할 것입니다. 프로그래밍을 처음 접하거나 기술을 확장하려는 경우, 이 랩은 성공하는 데 필요한 도구를 제공합니다.
코딩 연습을 위해 터미널/SSH 를 열고 node를 입력하세요. 이 알고리즘은 숫자 배열 내에서 가장 큰 합을 가진 연속적인 부분 배열을 찾습니다. 이 알고리즘을 구현하려면 다음 단계를 따르세요.
sum과 현재 최대값인 maxSum을 추적합니다. 모든 값이 음수인 경우 가장 높은 음수 값을 반환하도록 maxSum을 -Infinity로 설정합니다.sMax, 최대 종료 인덱스 eMax 및 현재 시작 인덱스 s를 추적하기 위한 변수를 정의합니다.Array.prototype.forEach()를 사용하여 값을 반복하고 현재 값을 sum에 더합니다.sum이 maxSum보다 크면 인덱스 값과 maxSum을 업데이트합니다.sum이 0 미만이면 0으로 재설정하고 s의 값을 다음 인덱스로 업데이트합니다.Array.prototype.slice()를 사용하여 인덱스 변수로 표시된 부분 배열을 반환합니다.다음은 알고리즘에 대한 JavaScript 코드입니다.
const maxSubarray = (...arr) => {
let maxSum = -Infinity,
sum = 0;
let sMax = 0,
eMax = arr.length - 1,
s = 0;
arr.forEach((n, i) => {
sum += n;
if (maxSum < sum) {
maxSum = sum;
sMax = s;
eMax = i;
}
if (sum < 0) {
sum = 0;
s = i + 1;
}
});
return arr.slice(sMax, eMax + 1);
};
다음은 함수 사용 예시입니다.
maxSubarray(-2, 1, -3, 4, -1, 2, 1, -5, 4); // [4, -1, 2, 1]
축하합니다! 최대 부분 배열 랩을 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.