그래도 싸지르던건 인계 해주고 가야 될꺼 같아서 도움 안되더라도 -_-;
쿄스케횽이 해시맵 쓴다니까 전혀 도움 안되겠지만;;;
가정 - 중복횟수를 n회 이상이라 한다면 시드 라인 수가 n라인 미만이면 당연히 프로그램은 가동되지 않으나,
n라인 추출중 n회 이상 반복되는걸 6개 찾는건 그 자체가 로또다. 컴이 뭔지도 모르고 무한루프 돌 확률이 높다.
그래서 전체 시드 라인중 n회 이상 반복되는게 6개 이상인지 확인하고 시작한다고 가정한다
랜덤 추출시 랜덤에 의존해야 하기 때문에 무한루프 돌 확률이 높지만 이 방법은 일단 n회 이상 반복되는 모든 라인을 추출하고
그 중에서 유효한 라인을 최대한 많이 추출하는게 목적이다
1. 입력을 받을때, 시드 라인 수가 k개라면 1개의 배열 offset을 추가 생성한다(45 * 시드라인수값)
2. 입력을 받으면서 각 라인마다 파싱, 이를 45칸 배열인 line에 저장.
3. for x to 시드라인수 step by 1
4. offset[x][line[i]] = 1
5. x라인은 1라인부터 x라인까지 출현 횟수의 합을 더한다
6. 모든 입력이 끝난 후 가장 마지막 라인에서 n(중복횟수)회 이상 중복된게 6회 미만이면 갖다 버린다. 답 안나온다.
7. 포인터 head와 tail을 offset배열의 첫부분과 n번째 라인으로 둔다.
8. offset[a][b]와 offset[c][b]의 값의 차가 n을 넘으면 n라인중 n회 반복되는 수가 b라는거고, 이게 6개 이상인 경우의 모든 head와 tail을
따로 리스트에 저장해둔다
9. 이 head와 tail의 인덱스 차가 딱 n 될 확률은 거의 제로. 만약에 n이면 걍 출력.
10. 아까 저장한 head와 tail의 차에 대해 n개짜리 포인터배열 x를 만들고 head와 tail 사이에서 n개를 x를 이용해 탐색을 돌린다
11. 6개 이상이 n회 반복되는 n개의 라인 조합들을 따로 리스트에 뽑아낸다.
12. 이 리스트중에서 랜덤추출해서 조합을 배출해준다.
조또 도움 안되는 알고리즘이지만 싸지르고 다시 공부하러 토끼겠음 ㄲㄲㄲㄲㄲ
아마 고수 횽들이 보면 나 욕하겠지 알고리즘 더럽다고 -_-;;;
ADL 따위는 밥말아 먹었음 나도 급함 ㅋㅋㅋㅋ
벌써 점심시간이네 ㅋㅋㅋ 밥 먹으면서 잠깐 프갤 구경이나 하고 있어야지