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

JavaScript로 숫자 문자열에서 가장 큰 5자리 연속 숫자 찾기

문제 설명

최소 5자리 이상으로 구성된 숫자 문자열을 입력받는 JavaScript 함수를 작성해야 합니다. 이 함수는 주어진 숫자 안에서 연속된 5자리 숫자 시퀀스 중 가장 큰 값을 찾아 반환해야 합니다.

예를 들어, '123546544'라는 문자열이 주어지면 가능한 5자리 조합은 '12354', '23546', '35465', '54654', '46544'이며, 그중 가장 큰 값인 '54654'를 반환하면 됩니다.

예제 코드

다음은 위 문제를 해결하는 코드입니다.

const num = '123546544';
const findGreatestFiveDigit = (num = '') => {
    const str = num.toString();
    const arr = [];
    for(let i = 0; i < str.length; i++){
        arr.push(str.slice(i, i + 5));
    };
    return Math.max(...arr);
};
console.log(findGreatestFiveDigit(num));

코드 동작 원리

이 코드의 핵심 로직은 다음과 같습니다.

1단계: toString() 메서드를 사용하여 입력값을 안전하게 문자열로 변환합니다. 이미 문자열인 경우에도 오류 없이 처리됩니다.

2단계: 반복문을 돌면서 slice(i, i + 5)로 인덱스 i부터 시작하는 5자리 부분 문자열을 추출하여 배열에 저장합니다. 마지막 부분은 5자리가 되지 않을 수 있지만, Math.max()가 문자열을 자동으로 숫자로 변환할 때 잘린 문자열은 더 작은 값으로 처리되므로 결과에 영향을 주지 않습니다.

3단계: 전개 연산자(...)를 사용해 배열의 모든 요소를 Math.max()에 전달하고, 그중 가장 큰 값을 반환합니다.

출력 결과

54654

참고 사항

더 엄격한 구현을 원한다면 길이가 정확히 5자리인 경우만 배열에 추가하도록 조건을 추가할 수 있습니다.

for(let i = 0; i <= str.length - 5; i++){
    arr.push(str.slice(i, i + 5));
}

이렇게 하면 불완전한 부분 문자열이 포함되지 않아 의도치 않은 결과를 방지할 수 있습니다.