[프로그래머스 level1] 복서 정렬하기

김예지·2021년 10월 16일
1

문제

https://programmers.co.kr/learn/courses/30/lessons/85002


문제 풀이

코드

//'N' 처리해주기
function solution(weights, head2head) {
    let answer=[];
    let sum=[];
    for(let i=0; i<weights.length; i++){
        let n=weights.length;
        const tmp=[];
        let win=0, cnt=0;
        tmp.push(weights[i]); //몸무게 
        for(let j=0; j<weights.length; j++){
            if(head2head[i][j]==='W'){
                win++;
                if(weights[j]>weights[i]) cnt++;
            } 
            else if(head2head[i][j]==='N'){
                n--
                if(n===0) n=1;
            };
        }
        tmp.push(win/n); //승률
        tmp.push(cnt); //무거운 사람을 이긴 횟수 
        tmp.push(i+1);
        sum.push(tmp);
    }
    sum=sum.sort((a, b)=>{
        if(b[1]===a[1]){
            if(b[2]===a[2]){
                if(b[0]===a[0]) return a[3]-b[3];
                else return b[0]-a[0];
            }
            else return b[2]-a[2];
        }
        else return b[1]-a[1];
    });
    for(let x of sum){
        answer.push(x[3]);
    }
    return answer;
}

head2head[i][j]==='N' 의 경우를 고려하지 않아서 문제가 테케 몇개를 통과하지 못했었다.
head2head[i][j]==='N'의 경우도 추가해줬음에도 계속 안돼서 보니까 for문 내 조건을 i<n으로 해놓은거 발견... i<weights.length 로 바꾸니까 제대로 동작했다.
변수를 제대로 확인하자!
어쨋든 내 힘으로 풀어서 기분 좋다~ 어제 안풀리던 문제들이 오늘은 다 풀려서 아주 기분이 좋다. 역시 머리 잘 돌아가는 날은 따로 있나보다👩🏻‍💻

다른분의 풀이로도 풀어보자.

profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

1개의 댓글