🏀  문제

 

합격 😀 (내가 풀이한 코드)

function solution(N, stages) {
  let answer = [];
  let count = 0;
  let total = stages.length;
  let box = [];
  // 스테이지
  for (let i = 1; i <= N; i++) {
    // 현재 스테이지에 멈춰 있는 사람을 구하기 위해 stages배열 순회
    for (let x = 0; x < stages.length; x++) {
      if (i === stages[x]) {
        count += 1;
      }
    }
    box.push({ stage: i, lost: count / total });
    total = total - count;
    count = 0;
  }
  box = box.sort((a, b) => {
    if (b.lost === a.lost) {
      return a.stage - b.stage;
    } else {
      return b.lost - a.lost;
    }
  });
  for (let i = 0; i < box.length; i++) {
    answer.push(box[i].stage);
  }
  return answer;
}
console.log(solution(5, [2, 1, 2, 6, 2, 4, 3, 3]));

 

먼저 스테이지의 갯수 N만큼 스테이지 도전자들의 배열을 확인해 주기위해 for문으로 최상단을 감싸주었다.

그 다음 현재 스테이지 N을 클리어 하지못하고 멈춰잇는 사람들이 몇명이나 있나를 구해주기위해 stages의 배열을 순회 해주었고 클리어 하지 못한 사람이 있으면 count의 갯수를 늘려주었다.

그 다음 임시 저장소인 box 배열에 객체형태로 현재의 스테이지와 실패율을 계산하여 push해주었다.

그렇게 for문이 모두 돌아가고 나면 box변수에는 모든 스테이지마다 클리어하지 못한 사람들이 정렬 되지 않은 형태로 들어가게 된다.

이제 조건에 맞추어 먼저 실패율의 key값인 lost를 sort정렬로 오름차순 정렬을 해준다 여기서 실패율의 크기가 같을 시에는 스테이지가 더 낮은 쪽이 앞에 와야한다는 조건을 맞춰 주기위해 stage내림차순으로 정렬해준다.

이제 조건에 만족하는 box의 형태가 나오고 객체의 형태인 box값에서 현재 필요한 stage순서만을 추출해주기위해 for문으로 값을 추출해 answers넣어준다!!!

 

  

 

문제를 풀고 난 후..

  • 이게 LEVEL1문제라늬... 도대체 LEVEL3정도 까지 풀라면 얼마나 더 열심히 해야할지 가늠이 안된다..
  • 문제를 풀면서 느낀점인데 문제를 읽고 모든걸 다 이해해서 코드를 짜는 방식보단 어느정도 이해를 바탕으로 코드를 짜면서 틀린 부분을 수정하고 콘솔로그를 찍어보면서 조금씩 수정해 나가는 방식이 나랑 더 잘맞는것 같다.. (한번에 다 이해 못하고 푸는것도 있다...)

 

 

 

📌 문제  풀러가기 => https://programmers.co.kr/learn/courses/30/lessons/42889?language=javascript

 

 

코딩테스트 연습 - 실패율

실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스

programmers.co.kr

 

 

 

 

'알고리즘 > 프로그래머스' 카테고리의 다른 글

프린터.js  (0) 2021.08.11
숫자문자열과 영단어  (0) 2021.07.22
자연수를 뒤집어 배열로 만들기  (0) 2021.07.20

+ Recent posts