본문 바로가기

프로그래머스 - Lv1. 실패율 / Object.entries() 본문

개발/algorithm

프로그래머스 - Lv1. 실패율 / Object.entries()

자전하는명왕성 2023. 1. 29. 22:25

문제 - 실패율

 

function solution(N, stages) {
  let obj = {}
  // 객체로 정리
  for(let i = 1 ; i <= N ; i ++ ){
    for(let j = 0 ; j <= stages.length ; j++){
      if(i===stages[j]){
        obj[i] = (obj[i] || 0) +1
      } 
    }
    if(!obj[i]){
      obj[i] = 0
    }
  }
  
  let result = {...obj}
  let leng = stages.length  
  
  // 복제한 result 객체에 실패율 저장
  for(let i = 1 ; i < Object.keys(obj).length +1 ; i++){
    result[i] = obj[i]/leng
    leng -= obj[i]  
  }
  console.log(result)
 }

//{
//  '1': 0.125,
//  '2': 0.42857142857142855,
//  '3': 0.5,
//  '4': 0.5,
//  '5': 0
//}

 

문제는 실패율을 내림 차순으로 정렬한 배열을 윈한다.

따라서, 해당 문제 해결을 위해 객체를 정렬하는 방법을 찾다가 Object.entries에 대해 알게 되었다.

 

Object.entries

해당 메소드는 객체가 가지고 있는 모든 데이터를 이중 배열 형태로 반환해준다.

// Object.entries() 예시

let obj = {a:1,b:3,c:2}

console.log(Object.entries(obj))

// [ [ 'a', 1 ], [ 'b', 3 ], [ 'c', 2 ] ]

 

이를 활용하면, 배열 관련 메서드를 사용하기 편해진다.

// sort 를 사용한 방식

let obj = {a:1,b:3,c:2}

console.log(Object.entries(obj).sort((a,b)=>a[1]-b[1]))

// [ [ 'a', 1 ], [ 'c', 2 ], [ 'b', 3 ] ]

 

위와 같은 방식을 통해 문제를 해결할 수 있었다.

Comments