연권
달콘박스
연권
전체 방문자
오늘
어제
  • 전체 (308)
    • Web (22)
      • JavaScript (8)
      • TypeScript (2)
      • Node.js (8)
      • HTML (0)
      • CSS (0)
      • Network (1)
      • Browser (0)
      • Patterns (3)
    • Framwork (4)
      • Vue.js (3)
      • Electron (1)
    • Infra&DevOps (1)
    • Algorithm (246)
    • Database (16)
    • Review (15)
    • Test (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 알고리즘
  • 재귀
  • 진법
  • 코딩테스트 연습
  • 동적계획법
  • 백준
  • 스택
  • 프로그래머스
  • 백준ㅇ
  • BFS
  • sql
  • typescript
  • 문자열
  • 백트레킹
  • java
  • javascript
  • 정렬
  • 진수
  • DP
  • MySQL

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
연권

달콘박스

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

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

2021. 9. 8. 21:17
반응형
 

코딩테스트 연습 - 6주차

복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요

programmers.co.kr

 

비교할 데이터를 객체 배열로 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);
반응형
저작자표시 동일조건 (새창열림)

'Algorithm' 카테고리의 다른 글

프로그래머스 코딩테스트 연습 Level1 - 실패율 [ javascript ]  (0) 2021.09.11
프로그래머스 위클리 챌린지 4주차 - 직업군 추천하기 [ javascript ]  (0) 2021.09.10
소인수분해 알고리즘 [ javascript ]  (0) 2021.09.08
소수 판별 알고리즘 [ javascript ]  (0) 2021.09.07
프로그래머스 코딩테스트 연습 Level1 - 3진법 뒤집기 [ javascript ]  (0) 2021.08.13
    'Algorithm' 카테고리의 다른 글
    • 프로그래머스 코딩테스트 연습 Level1 - 실패율 [ javascript ]
    • 프로그래머스 위클리 챌린지 4주차 - 직업군 추천하기 [ javascript ]
    • 소인수분해 알고리즘 [ javascript ]
    • 소수 판별 알고리즘 [ javascript ]
    연권
    연권

    티스토리툴바