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

JavaScript로 단어 배열 기반 문자열 유효성 검사하기

문제 소개

유효한 단어들로 이루어진 배열과 하나의 문자열을 입력받아, 해당 문자열이 배열 속 단어들을 조합해 만들어질 수 있는지 판별하는 JavaScript 함수를 작성해 보겠습니다.

입력

const arr = ['love', 'coding', 'i'];
const str = 'ilovecoding';

출력

const output = true;

'ilovecoding'은 배열 arr의 단어인 'i', 'love', 'coding'을 차례로 이어 붙여 만들 수 있기 때문에 결과는 true입니다.

해결 접근 방식

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

1. 배열의 모든 단어를 join() 메서드로 하나의 문자열로 합칩니다.
2. 합쳐진 문자열과 대상 문자열을 각각 split('')으로 글자 단위로 분리한 뒤, sort()로 알파벳순 정렬하고 다시 join('')으로 합칩니다.
3. 정렬된 배열 문자열에 정렬된 대상 문자열이 포함되어 있는지 includes()로 확인합니다.

글자를 정렬하면 원래의 순서 정보는 사라지고 문자 구성만 남게 되므로, 순서와 무관하게 문자열이 배열의 단어들로 조합 가능한지 비교할 수 있다는 점이 이 방식의 핵심입니다.

예제 코드

실제로 동작하는 전체 코드는 다음과 같습니다.

const arr = ['love', 'coding', 'i'];
const str = 'ilovecoding';
const validString = (arr = [], str) => {
    let arrStr = arr.join('');
    arrStr = arrStr
    .split('')
    .sort()
    .join('');
    str = str
    .split('')
    .sort()
    .join('');
    const canForm = arrStr.includes(str);
    return canForm;
};
console.log(validString(arr, str));

실행 결과

true

콘솔에 true가 출력되며, 이는 문자열 'ilovecoding'이 배열에 포함된 단어들로 성공적으로 조합될 수 있음을 의미합니다. 이처럼 문자열 정렬과 포함 여부 확인만으로도 간단하게 유효성 검사 로직을 구현할 수 있습니다.