[Refresh ! 코딩 테스트 / js] -인사고과

정대만·2025년 2월 27일

문제해석

❌ Solution (48 / 100 )

  • sort 을 [0] : 내림차순 [1]: 내림차순 으로 하면 score[0] 이 최대 수가 되니 이수보다 작은 애들을 filter 한다
  • 그다음 순위를 알기 위해서 합이 같은 애들끼리 묶어서 순위를 나타내려고 했다.
  • 그런데 [2] 과정에서 뭐가 이상해서 남의 코드를 보니. 주인공보다 큰 애들만 구하면 된다고 해서 그렇게 수정해서 코드를 제출했는데 자꾸틀렸다.
  • 30분동안 고민후 chatgpt 한테 물어봤다.

✅ Solution( 100 / 100 )

  • sort 을 할때 [0] 은 내림차순 [1] 은 올림차순으로 바꾸라고 하였다.
  • 그리고 작은애들을 filter 하는 과정에서 오류가 발생했다고 하였다.
  • [1] 부분을 생각해보면 당연히 [0] 을 기준으로 내림차순했으니 내 앞번 째는 [0] 가 다 크니 나는[1] 부분을 생각해야된다는것을 알게되었다.
  • 위의 풀이에서 score[0] 이 최대수가 되지 않는다.
  • 따라서 [1] 부분을 갱신하라고 하였다. ( 이부분이 이해가 안되서 풀이과정을 차근차근 정리하였다.)

나의 코드

function solution(scores) {
  let wan_ho= scores[0];
    
  scores.sort((a,b)=>{
      if(b[0]==a[0]) return a[1]-b[1];
      else return b[0]-a[0]
  })
   
    //맨앞을 기준으로 이거보다 작은거 있으면 filter 해야됨
    let f_score= scores[0][0];
    let e_score=  0;
    let new_score=[];
    
    for( const [f,s] of scores){
        if(wan_ho[0]<f && wan_ho[1]<s) return -1;
        if(s>=e_score) {
            new_score.push([f,s]);  
        e_score= Math.max(e_score, s);
        }
        
    }
   let score=1;
    
    for( const[ff,ss] of new_score ){
        if(ff+ss> wan_ho[0]+wan_ho[1]){
            score+=1;
        }
    }

   return score
}

profile
안녕하세요

0개의 댓글