안녕하세요 프로그래밍 이제 입문하는 프린이 입니당
친구들이랑 롤 5:5 게임할때 팀 짜는 프로그램 파이썬으로 만들어보고 있는데
라이엇api 이용해서 전적 불러오는거랑 tkinter로 gui까진 다 만들었습니다.
다 만들고 실행해보니 꽤 오래걸리네요. 알고리즘이 쓰레기입니다.
알고리즘을 바꿔야하겠는데 어떻게 하면 좋을까요? 팀 밸런스가 중요합니다.
기존 알고리즘
1. 롤 닉네임 입력 x10
2. 10명이 랜덤으로 셔플
3. 전적 조회해서 티어에 숫자 매김 (브론즈는1, 실버는2, 골드는3 이런식으로)
4. a팀 5명의 숫자를 모두 합한것과 b팀의 숫자를 합한것을 비교함
5. 차이가 심하면 다시 셔플 (2로 돌아감)
기존 알고리즘대로 하면 문제가
1. 밸런스 맞을때까지 섞고 10명 전적 검색하고 반복하기에 오래걸림
2. 만약 티어가 극단적으로 분포되어 있으면 무한반복이 될 수도 있음.
3. 밸런스의 기준이 애매함.
조금이라도 도와주세요 ㅠㅠㅠ
해당 댓글은 삭제되었습니다.
네 이건 아닌거같아요..
해당 댓글은 삭제되었습니다.
그거도 생각해보긴 했는데 지금처럼 티어에 숫자 부여하는 방식이면.. 만약 티어가 브론즈 1명 다이아9명 이렇게되면 프로그램이 무한반복해요..
경우의수 다 뽑아놓는 방법도 있었네요 ㄷㄷ..
정렬한다음에 맨 밑에서부터 번갈아가면서 팀에 넣으면 어떰
감사합니당
티어가 제일 높은사람은 a팀 그 다음 사람은 b팀으로 보낸다음 그 둘의 티어차이가 작으면 다음 사람-다다음 사람도 a-b팀 둘의 티어차이가 크면 b-a 이런식으로 가야하지않나
오오 많이 도움됐어요
아니네 이방법도 문제가있네 처음 두명 넣는건 동일하고 그 다음부터는 a팀 + 선수1 / b팀 + 선수2 랑 a팀 +선수2 / b팀 +선수2 해서 차이가 더 작은 쪽으로 해서 붙여야 맞을듯 근데 이건 포지션 차이를 극복할수없지않나
친구들끼리 하는거라 포지션은 괜찮습니당
그러면 그냥 밑에 말처럼 랜덤으로 양팀 넣으셈 그게 짜기도 편하고 팀 조진것같다 싶으먄 그냥 다시돌리면되니까
주말에 골3 탑솔러 용병 필요하면 말하고
해당 댓글은 삭제되었습니다.
이게 제일 좋을거같네요 밸런스도 적당하고 팀이 많이 겹치지도 않겠네요