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
로 바꾸니까 제대로 동작했다.
변수를 제대로 확인하자!
어쨋든 내 힘으로 풀어서 기분 좋다~ 어제 안풀리던 문제들이 오늘은 다 풀려서 아주 기분이 좋다. 역시 머리 잘 돌아가는 날은 따로 있나보다👩🏻💻
다른분의 풀이로도 풀어보자.
10/26
sort 연습! 문제 삭제됨. 아래 링크 참고!
https://velog.io/@source39/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EB%B3%B5%EC%84%9C-%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0