문제 설명
최소 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));
}이렇게 하면 불완전한 부분 문자열이 포함되지 않아 의도치 않은 결과를 방지할 수 있습니다.