반응형

프로그램을 만들어서 무한반복(까지는 아니고) 반복문으로 
로또 경우의 수 생성하고있다.
좀 많이 무식한 방법인데...

6자리의 숫자를 생성해서
① 생성된 숫자가 DB에 존재하는지 존재여부를 검색
② 존재하면 건너뛰고 존재하지 않으면 6자리 숫자를 DB에 입력
하는 아주 단순한 로직이다.

문제는 너무 단순하다 보니까 무조건 돌리기만 한다는 거...

중복되는 숫자를 제거하고 돌리다 보니 DB에 쌓인 데이터의 양이  4,5일정도 
돌렸음에도 불구하고 30만건을 겨우 넘는 정도였다.

숫자를 생성하는 속도자체는 큰 차이가 없지만 그것을 일일이 DB에 접근해서
유효한 것인지 아닌지를 판단하다 보니 속도가 엄청 느려졌다고나 할까?

그래서...
유효성판단하는 함수에 한가지를 더 추가했다.

(a)01,(b)02,(c)03,(d)04,(e)05,(f)06 번째 자릿수의 특징 중 하나가
뒷자릿수가 앞의 자릿수보다 작은수가 올 수 없다는 것이니...

무한생성시키고 있는 숫자중에 뒷자리가 앞자리 보다 작은 숫자들은
이미 기존에 입력된 값이 있는 중복된 값이기 때문에 무조건 무시하고
생성하기로 했더니...

4,5일간 30만건 생성했던 속도가 하룻밤만에 30만건을 생성하는게 아닌가... -_-;
앞으로 추가할 로직이 몇가지 더있긴 한데... 쩝...

+ Recent posts