Lv 1. 실패율

박하린·2021년 6월 1일
0

프로그래머스

목록 보기
12/42

📚 문제

실패율
https://programmers.co.kr/learn/courses/30/lessons/42889

💡 접근

  • 실패율 계산
    알고리즘으로 구현하기위해 규칙을 찾으려는 노력을하였다.

    for문을 최대한 안쓰려고 했지만 stage 1 ~ N 까지의 실패율을 구하려면 for문 밖에 없는것 같아 for문으로 실패율을 하나씩 구하는 알고리즘을 짰다.
    먼저 분자는 = stages 배열 안에 있는 1 ~ N까지 해당 스테이지의 플레이어수의 개수
    분모는 = 해당 스테이지보다 크거나 같은 플레이어수의 개수
    를 계산하는 코드를 구현
  • 배열 안의 객체
    실패율을 구해서 큰것부터 정렬하고 그 실패율에 해당하는 인덱스를 반환하는 알고리즘으로 접근하였다.
    하나의 배열 안에 {스테이지 : 실패율}로 이루어진 객체를 할당해서 스테이지만 배열로 다시 할당해서 이 배열을 반환하는 코드를 구현하였다.

⌨️ 코드

function solution(N, stages) {
    let rateArr = []; // 실패율 할당 배열

    for (let i = 1; i <= N; i++){
        let rate = stages.filter(value => value === i).length / stages.filter(value => value >= i).length // filter메소드로 조건에 맞는 플레이어의 수만 걸러서 실패율 계산
        rateArr.push({stage : i, rate : rate}) // 배열안에 {stage : rate} 객체 push
    }

    rateArr.sort((a,b) => b.rate - a.rate) // rate를 정렬

    return rateArr.map(el => el.stage) // map메소드로 정렬된 객체의 stage만 새로운 배열에 return해줌
}

📝 리뷰

배열 안에 객체를 넣을 수 있다고 알고는 있었는데 관련된 문제를 풀어본 적이 없었던 것 같다.
sort, map 같은 메소드도 배열에만 써봤지 배열안에 객체에 접근하는 코드를 구현해본 적이 없어서 검색을 많이 했다.
객체 구조에 더 익숙한 풀이를 할 수 있도록 노력해야겠다.!

profile
깃허브: https://github.com/khakaa

0개의 댓글

Powered by GraphCDN, the GraphQL CDN