문제 개요
JavaScript에서 문자열 문장을 유일한 인자로 입력받아, 그 안에서 두 번째로 짧은 단어의 길이를 반환하는 함수를 작성해야 합니다.
예를 들어, 다음과 같은 문자열이 주어졌을 때 −
const str = 'This is a sample string';
각 단어의 길이는 This(4), is(2), a(1), sample(6), string(6)입니다. 가장 짧은 단어는 'a'(길이 1)이고, 그다음으로 짧은 단어는 'is'(길이 2)이므로 출력 결과는 2가 되어야 합니다.
예시 코드
다음은 위 문제를 해결하는 JavaScript 코드입니다 −
const str = 'This is a sample string';
const secondSmallest = str => {
const strArr = str.split(' ');
if(strArr.length < 2){
return false;
}
for(let i = 0; i < strArr.length; i++){
strArr[i] = strArr[i].length;
};
strArr.sort((a, b) => a - b);
return strArr[1];
};
console.log(secondSmallest(str));코드 동작 원리
이 코드는 다음 단계를 거쳐 동작합니다.
- split(' ') : 공백을 기준으로 문자열을 단어 배열로 분리합니다.
- 단어 개수 검사 : 단어가 2개 미만이면 두 번째로 짧은 단어가 존재하지 않으므로 false를 반환합니다.
- 길이 변환 : 반복문을 통해 각 단어를 해당 단어의 길이(숫자)로 치환합니다.
- 오름차순 정렬 : sort()에 비교 함수 (a, b) => a - b를 전달해 길이 기준으로 오름차순 정렬합니다.
- 결과 반환 : 정렬된 배열의 인덱스 1에 있는 값, 즉 두 번째로 짧은 단어의 길이를 반환합니다.
출력 결과
콘솔에 출력되는 결과는 다음과 같습니다 −
2