신입 개발자에서 시니어 개발자가 되기까지

알고리즘 - 0을 기준으로 문자를 나누는 법(feat. 정규표현식) 본문

javascript/알고리즘

알고리즘 - 0을 기준으로 문자를 나누는 법(feat. 정규표현식)

Jin.K 2023. 3. 9. 11:44

카카오 k진수에서 소수 개수 구하기 문제에서 나온 알고리즘이다.

0을 기준으로 k진수를 나누어서 각 수가 소수가 아닌지 판별해야 한다.

0을 기준으로 숫자를 나누기 위해 처음엔 반복문으로 풀었는데 코드가 길다.

   let arithmetic = n.toString(k);
    let array = [];
    let string = '';
    for(let i =0; i<arithmetic.length ;i++){
        if(arithmetic[i] !=='0'){
            string +=arithmetic[i];
        } else {
           string !== '1' && string !==''&&array.push(Number(string))
            string = '';
        }
    }
    if(string !== '' && string !== '1'){
        array.push(Number(string))
    }

이런식으로 0을 만나면 저장해둔 string을 배열에 push하고, 0이 아니면 string이라는 변수에
해당 숫자를 더해주는 식으로.. 근데 또 소수를 판별해야하니까 1이나 공백이 들어가면 안 된다.

근데 다음과 같은 아주 간단한 방식이 있었다.

//n=437674, k=3
let arithmetic = n.toString(k); //211020101011
const reg = /[1-9]*/g;
arithmetic.match(reg).filter((item) => item !== ''&&item !=='1')
//[ '211', '2', '11' ]

너무 간단해서 이건 기억해둬야겠다