Skip to content

[구현] 프로그래머스#42889 - 실패율 #11

Description

@ye-yo

⚠️ 나의 풀이

  • failUser : 각 stage별로 해당 스테이지에 머무르고 있는 사람 count;
  for (let i = 0; i < stages.length; i++) {
    failUser[stages[i] - 1]++;
  }
  • 반복문 돌면서 아래와 같이 계산
  totalUser[N] = failUser[N];
  for (let i = answer.length - 1; i >= 0; i--) {
    totalUser[i] = failUser[i] + (i + 1 <= N ? totalUser[i + 1] : 0);
    answer[i] = failUser[i] == 0 ? 0 : failUser[i] / totalUser[i];
  }

❗️ 오답 원인 분석

  • 실패율을 내림차순으로 정렬해서 스테이지를 전달해주는 것을
    c++이었으면 pair를 사용했겠지만 javascript에서는 어떻게 구현할지 생각이 떠오르지 않음.

🔑 풀이 핵심

  • stage정보와 실패율 모두 저장하기 = arr.push[스테이지, 실패율])
  • sort는 두번째 원소 기준 정렬하고 answer.sort((a, b) => b[1] - a[1])
  • 정렬한 배열은 첫번째 원소만 저장하도록 변경 answer.map((a) => a[0])
  • 그리고 문제 풀이 방식을 반대로 생각해보기
  1. i번째 위치에서 실패한 사람 count
  2. 실패율 = 실패한사람수 / 총인원 // 이 위치까지 도전한 총 인원 = 초기값은 전체 인원 수
  3. 총인원 -= 실패한 사람 수

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

풀이미흡제대로 풀이하지 못함.

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions