복서_다시 풀기

은유로그·2021년 10월 9일
0

👩‍💻 algorithm

목록 보기
3/11

✅ 코드 실행 - 3개 중 3개 통과!
❌ 제출 후 채점하기 - 12개 중 1개 통과.. -> 3개 통과!


수정한 부분 1

for(let i = 0; i < info.length; i++){
  
  let round = (head2head[i].match(/W/g) || []).length + (head2head[i].match(/L/g) || []).length;
  // 시합한 횟수 = 승리한 횟수 + 진 횟수 (승리 또는 패배가 없을 경우 0)
  
  info[i] = {
    player: i + 1,
    winningrate: (head2head[i].match(/W/g) || []).length / round,
    // 승률 = (이긴 횟수 / 경기 횟수)
    winning: win(head2head[i], i),
    weight: weights[i],
  };
  
}    
  • 원래 승률 부분을 좀 복잡하게 구했었는데, 승률을 단순하게 이긴 횟수 나누기 총 경기 횟수로 나눠서 구하면 된다길래,
  • 먼저 round 변수에 총 경기 횟수를 할당했다.
  • 그리고 info 정의할 때 winningrate 값을 수정했다.

수정한 부분 2

info = info.sort((a, b) => b.winningrate - a.winningrate);

info = info.sort((a, b) => {
  if(a.weight === b.weight){
    return a.player - b.player;
  }
  if(a.winning === b.winning){
    return b.weight - a.weight;
  }
  if(a.winningrate === b.winningrate){
    return b.winning - a.winning;
  }
});
  • 정렬하는 부분도 단순하게 생각해서 요래조래 썼는데 사실 완벽하게 이해하진 못했다.. 좀 더 생각해야 할 부분!

수정한 부분 3

result = info.map(el => el.player);
  • 결과 배열엔 info.player만 담을 수 있도록 수정했다.

🥲 왜 통과가 안될까?

질문하기 탭에 들어가 다른 사람들의 코드를 보며 추측하건데, 승률 부분 또는 정렬 부분에서 문제가 있는 거 같다. 승률 구하는 부분은 이래저래 다 써봐도 잘 나오는 거 같고.. 거의 90% 확률로 정렬 부분에서 문제가 있을 거 같음 ^_ㅠ
이 부분은 좀 더 생각해보자!!

profile
๑•‿•๑

0개의 댓글