본문 바로가기

JavaScript

[JavaScript] 배열에서 연속적인 숫자 뽑아내기

실생활에서 자주 접할 수 있는데, 비밀번호, 아이디, .... (자주..? 는 아닐지도)에서 패턴 반복을

막기 위해서 사용할 경우가 있다.

정규식을 사용하면 간단하게 해결할 수 있는 문제일 수 있지만,

만약 0 ~ 9까지만 숫자가 있는게 아닌 0 ~ 100000000000 이라면?

( 과장을 보탰다. 실제로 저기서 뽑는다면 엉청 오래걸릴지도...)

 

정규식으로 어썸하게 해결하는 정규식 굇수분들이 있을 수 있지만 본인은 못하기 때문에 반복문을

사용해서 해결하였다.

function func(array, goal) {
    for(let i = 0; i < array.length; i ++) {
        let cnt = 1;
        let num = array[i];

        while(true)
            if(array.includes(++num)) cnt++;
            else break;

        if(cnt === goal)// 연속된 숫자가 목표개 있음
    }
}

for문 안에 while문을 반복하는 방식으로 해결했다.

만약 1, 2, 3, 4, 5, 6, 7 연속되고 goal이 4일 경우

4, 5, 6, 7이 if문에 들어가게 될 것이다.

 

반응형