문자열을 나눈다는것 #

제수를 기준으로 둘로 나누기 #

예제는 자바스크립트입니다.

const dividend = "ayayewoo";

문자열을 나눈다면 제수와 피제수가 있어야합니다. 단, 숫자가 아니고 문자다보니 제수와 피제수는 당연히 숫자가 아닌 문자입니다.

아래와 같은 방식입니다.

const dividend = "ayayewoo";
const divisor = "ye";

이를 나눈다면 어떻게 나뉘어야 할까요? 정말 단순하게 divisor를 기준으로 aya, woo로 나뉠 수 있겠습니다.

dividend.split(divisor) // ["aya", "woo"]

이런 식입니다.

제수를 기준으로 나누되 나뉘어진 몫을 빼버리기 #

const dividend = "ayayewoo";
const divisor = "ye";
dividend.replace(divisor, ' ') // aya woo

replace로 해당 위치를 적절한 구분자가 되어줄 문자로 대체합니다.

이런걸 하는 이유 #

어떤 문자열이 주어졌을 때, 해당 문자열에 포함되면 안되는 문자를 선별해야 한다고 가정하겠습니다. 예를 들어 아래는 프로그래머스 옹알이 문제의 일부를 예로 사용하겠습니다.

const babbling = ['ayayewoowoo']

function solution(babbling){
    const sounds = ['aya', 'ye', 'woo', 'ma'];

    for(const bab of babbling) { // 'ayayewoowoo'
        let temp = bab; // 'ayayewoowoo'

        for(const sound of sounds) { // 'aya', 'ye', 'woo', 'ma'
            while(bab.includes(sound)) { // true
                temp = temp.replace(sound, ' '); // ' yewwoowoo'
            }

            if(temp.trim() === '') {
                console.log(`${bab}은 sounds의 조합만으로 이루어졌습니다.`)
            }

        }
    }

}

solution(babbling);

위의 예제는 검사 할 대상인 변수 bab을 피제수 sounds 배열의 각 인자를 제수로 생각한다면

ayayewoowoo에 대해 aya로 나누면 -> yewoowoo 이를 변수 temp에 초기화

다시 yewoowoo에 대해 ye로 나누면 -> woowoo 이를 변수 temp에 초기화

다시 woowoo에 대해 woo로 나누면 -> woo 이를 변수 temp에 초기화

다시 woo에 대해 ma로 나누면 -> woo 이를 변수 temp에 초기화

이제 sounds 배열의 순회가 종료되었습니다. 완전히 나누어 떨어지지 않고 나머지인 woo가 남았습니다.