프로그래머스 위클리 챌린지 6주차 - 복서 정렬하기 [ javascript ]

프로그래머스 위클리 챌린지 6주차 - 복서 정렬하기 [ javascript ]

반응형

비교할 데이터를 객체 배열로 map한 후 sort를 통해 문제의 조건에 맞게 정렬하였습니다.

const winningPoint = { N: 0, L: 0, W: 1 }; const getWinningRate = head => Array.from(head).reduce((acc, winning) => (acc += winningPoint[winning]), 0) / (head.length - head.match(/N/g).length || 1); const solution = (weights, head2head) => weights .map((weight, idx) => ({ idx, weight, head2: head2head[idx], beatCount: weights.reduce( (acc, weight2, idx2) => weight < weight2 && head2head[idx].charAt(idx2) === "W" ? (acc = acc + 1) : acc, 0 ) })) .sort((a, b) => { const [winningRateA, winningRateB] = [ getWinningRate(a.head2), getWinningRate(b.head2) ]; if (winningRateA !== winningRateB) return winningRateB - winningRateA; if (a.beatCount !== b.beatCount) return b.beatCount - a.beatCount; if (a.weight !== b.weight) return b.weight - a.weight; return a.idx - b.idx; }) .map(({ idx }) => idx + 1);

반응형

from http://dalconbox.tistory.com/290 by ccl(S) rewrite - 2021-09-09 06:01:41