elice-AI4 / sonsaengnim

엘리스 AI 4기 3차 프로젝트 - 손생님 (5팀)
3 stars 1 forks source link

[백엔드] 점수 동점자 처리 '시간'에 대한 기준 추가 #6

Closed elizabethgim closed 2 years ago

elizabethgim commented 2 years ago
elizabethgim commented 2 years ago

Testcase

[100, 1]  max = 1
[100, 2]  max = 2
[100, 3]  max = 3
[90, 1] -> 4  max = 4
[80, 1] -> 5  max = 5
[100, 1]
[100, 2]
[100, 3] max=3  add = 1
[100, 3] max=3  add = 2
[100, 3] max=3  add = 3
[90, 1] -> 6  max + add = 6, max=6, add=0
[80, 1] -> 7 
[80, 2] -> 8  
[80, 2] -> 8
elizabethgim commented 2 years ago

https://www.section.io/engineering-education/nodejs-mongodb-custom-ranking/

elizabethgim commented 2 years ago

간단하게 생각하자

for (let i = 1, add = 1, r = 1; i < scores.length; i++, r++) {
      if (scores[i].score == scores[i - 1].score) {
        if (scores[i].time == scores[i - 1].time) {
          add++;
          scores[i].rank = scores[i - 1].rank;
        } else {
          scores[i].rank = scores[i - 1].rank + add;
          add = 1;
        }
      } else {
        scores[i].rank = scores[i - 1].rank + add;
        add = 1;
      }
      result.push(scores[i]);
      if (r == 10) break;
}
blcklamb commented 2 years ago

간단하게 생각하자

for (let i = 1, add = 1, r = 1; i < scores.length; i++, r++) {
      if (scores[i].score == scores[i - 1].score) {
        if (scores[i].time == scores[i - 1].time) {
          add++;
          scores[i].rank = scores[i - 1].rank;
        } else {
          scores[i].rank = scores[i - 1].rank + add;
          add = 1;
        }
      } else {
        scores[i].rank = scores[i - 1].rank + add;
        add = 1;
      }
      result.push(scores[i]);
      if (r == 10) break;
}

변수 r은 굳이 없어도 될 것 같아요!

for ( let i = 1, add = 1; i <= 10; i++) {
    if (scores[i].score == scores[i-1].score) {
        if (scores[i].time == scores[i-1].time) {
            add++;
            scores[i].rank = scores[i-1].rank;
        } else {
            scores[i].rank = scores[i-1].rank + add;
            add = 1;
        }
      } else {
        // 여기가 조금 이상한 것 같아요, i보다 한 개 이전 스코어와 다르면 무조건 rank가 1이 되는 게 아니었나용?
        // 만약 그게 맞으면, 다음으로 변경해야하지 않나요!
        // scores[i].rank = 1;
        // add = 1;
        scores[i].rank = scores[i - 1].rank + add;
        add = 1;
      }
      result.push(scores[i]);
}