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

자바스크립트(JavaScript)로 문자열에서 두 번째로 짧은 단어의 길이 구하는 방법

이번 포스트에서는 문장을 담고 있는 문자열을 첫 번째이자 유일한 인수로 전달받아, 해당 문자열 안에서 두 번째로 짧은 단어의 길이를 반환하는 자바스크립트 함수를 만들어 보겠습니다.

문제 이해하기

예를 들어, 입력으로 주어진 문자열이 다음과 같다고 가정해 봅시다.

const str = 'This is a sample string';

각 단어의 길이는 'This'(4), 'is'(2), 'a'(1), 'sample'(6), 'string'(6)입니다. 이 중 가장 짧은 단어는 'a'(길이 1)이고, 그다음으로 짧은 단어는 'is'이므로 함수가 반환해야 할 값은 2입니다.

해결 접근 방식

이 문제는 다음과 같은 순서로 해결할 수 있습니다.

1. 문자열을 공백을 기준으로 분리하여 단어 배열을 만듭니다.
2. 단어가 두 개 미만이라면 두 번째로 짧은 단어가 존재하지 않으므로 false를 반환합니다.
3. 각 단어를 해당 단어의 길이 값으로 변환합니다.
4. 배열을 오름차순으로 정렬합니다.
5. 정렬된 배열의 두 번째 요소(인덱스 1)를 반환합니다.

코드 구현

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(' ') 메서드는 문자열을 공백 기준으로 나누어 단어 배열을 생성합니다. 이후 반복문을 통해 각 단어를 length 속성으로 길이 숫자로 바꾼 뒤, sort((a, b) => a - b)를 사용해 오름차순으로 정렬합니다. 여기서 비교 함수를 반드시 지정해야 하는데, 그렇지 않으면 배열이 문자열 기준으로 정렬되어 잘못된 결과가 나올 수 있습니다.

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

2

'This is a sample string'에서 가장 짧은 단어는 'a'(길이 1)이고, 두 번째로 짧은 단어는 'is'(길이 2)이기 때문에 올바르게 2가 출력됩니다.