[プログラマー]2019 KAKAO BLIND RECRUITMENT-失敗率
8998 ワード
✔10.質問する
問題の説明
失敗率
スーパーゲーム開発者のオレリーは大きな悩みに陥った.彼女が作ったブランド「呉天成」は大きな成功を収めたが、最近は新しいユーザーの数が激減している.なぜなら、新しいユーザーと既存のユーザーの間の舞台の違いが大きすぎるからです.
どうすればいいか悩んだ彼女は、ゲームの時間を動的に増やして難易度を調整することにした.やはりスーパー開発者であり、ほとんどのロジックは実現しやすいが、失敗率を探す部分で危機に陥っている.オレリーの失敗率を求めるコードを完了します.
失敗率は次のように定義されます.
せいげんじょうけん
-各自然数は、ユーザが現在チャレンジしているステージの番号を表します.
-ただし、N+1は、最後のステージ(Nステージ)にクリアしたユーザを表す.
😎 ソースコード function solution(N, stages) {
let answer = [],
cur = [],
rest = [],
rate = [];
cur = Array(N).fill(0);
rest[0] = stages.length;
// 스테이지 유저 수 구하기
for (let i = 0; i < N; i++) {
for (let j = 0; j < stages.length; j++) {
if (stages[j] === i + 1) {
cur[i]++;
}
}
rest[i + 1] = rest[i] - cur[i];
}
// 실패율 계산
for (let k = 0; k < N; k++) {
rate[k] = cur[k] / rest[k];
}
// rate 객체 생성
// value를 기준으로 정렬할 때, 인덱스가 변경되면 안 되서
rate = rate.map((value, stage) => ({
value: value,
stage: stage + 1
}));
// 실패율이 높은 스테이지부터 내림차순 정렬
rate.sort((a, b) => b.value - a.value);
// answer에 stage를 넣어준다
for (let m = 0; m < N; m++){
answer.push(rate[m].stage);
}
return answer;
}
問題が終わったら
最初は問題を理解するのに時間がかかり、コードを書くときにオブジェクトを並べる使い方に苦労しました.私は変数名を少し混同していますが、わざとですか?
function solution(N, stages) {
let answer = [],
cur = [],
rest = [],
rate = [];
cur = Array(N).fill(0);
rest[0] = stages.length;
// 스테이지 유저 수 구하기
for (let i = 0; i < N; i++) {
for (let j = 0; j < stages.length; j++) {
if (stages[j] === i + 1) {
cur[i]++;
}
}
rest[i + 1] = rest[i] - cur[i];
}
// 실패율 계산
for (let k = 0; k < N; k++) {
rate[k] = cur[k] / rest[k];
}
// rate 객체 생성
// value를 기준으로 정렬할 때, 인덱스가 변경되면 안 되서
rate = rate.map((value, stage) => ({
value: value,
stage: stage + 1
}));
// 실패율이 높은 스테이지부터 내림차순 정렬
rate.sort((a, b) => b.value - a.value);
// answer에 stage를 넣어준다
for (let m = 0; m < N; m++){
answer.push(rate[m].stage);
}
return answer;
}
最初は問題を理解するのに時間がかかり、コードを書くときにオブジェクトを並べる使い方に苦労しました.私は変数名を少し混同していますが、わざとですか?
N
:ステージ総数stages
:各プレイヤーが滞在するステージ1.ステージごとに何人のプレイヤー(
cur
配列)、前ステージをクリアしたプレイヤー(rest
配列)の数を計算するために、新しい配列が作成された.2.
stages
の長さをfor loopとし、ステージステージと同じ数字があればcur[i]++
とする.3.
rest[]
の最初の要素は、合計ユーザ数に初期化され、cur[i]
が除去される.4.前に集計したプレイヤー数から失敗率を算出する.
5.失敗率とステージ値をオブジェクトに格納して並べ替え、固有のインデックスをそのままにします.
6.
answer
のステージ値が更新されました.生成されたオブジェクトの値を書くことに慣れていないので、少し迷います.また、この問題のように、完全に解くことができますが、長い時間をかけて何か問題がありますか...問題をどう解決すればいいか、すぐに思いつかなかったからですか.
Reference
この問題について([プログラマー]2019 KAKAO BLIND RECRUITMENT-失敗率), 我々は、より多くの情報をここで見つけました https://velog.io/@rany/프로그래머스-2019-KAKAO-BLIND-RECRUITMENT-실패율テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol