https://school.programmers.co.kr/learn/courses/30/lessons/42889#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
function solution(N, stages)
{
var users = [];
var count = 0;
for(j=1; j<=N+1; j++)
{
count =0; // count를 0으로 초기화해준다.
for (i=0; i<stages.length; i++)
{ // stages의 전체 요소에 대해서
if (stages[i]>=j) count++;
// stages[i]가 j 이상이라면 count를 1씩 늘려준다.
}
users.push(count);
// count를 users에 넣어준다.
}
// users = [스테이지1에 도달한 유저의 수, 스테이지2에 도달한 유저의 수, ... 스테이지N+1에 도달한 유저의 수]
// users = [8,7,4,2,1,1]
// users = [5,5,5,5,0]
// users = [6,5,4,2,2,1,1,0,0,0,0]
// ------------------------------------------------------------------------------------------------------
var fail_rate = [];
var rate = 0;
for (i=0; i<N; i++)
{
rate = (users[i]-users[i+1])/users[i];
if (users[i]==0) {rate = 0;} // 이거 추가해주는게 아주 중요했음 분모가 0이면 null이 나와버려서..
fail_rate.push(rate);
}
// fail_rate = [0.125,0.42857142857142855,0.5,0.5,0]
// fail_rate = [0,0,0,1]
// fail_rate = [0.16666666666666666,0.2,0.5,0,0.5,0,1,0,0,0]
// ------------------------------------------------------------------------------------------------------
// [0.125,0.42857142857142855,0.5,0.5,0] > [3,4,2,1,5] 이렇게 출력해야 한다
// [0,0,0,1] > [4,1,2,3] 이렇게 출력해야 한다.
// [0.16666666666666666,0.2,0.5,0,0.5,0,1,0,0,0] > [7,3,5,2,1,4,6,8,9,10] 이렇게 출력해야
// 그러려면 fail_rate의 가장 높은 값의 index를 추출해 answer이라는 배열에 push하고,
// fail_rate의 그 가장 높은 값을 -1로 변경한다.
// 언제까지? i=0부터 i<fail_rate.index까지
var answer = [];
var max = 0;
var index = 0;
for (i=0; i<fail_rate.length; i++)
{
max = Math.max(...fail_rate); // fail_rate의 최대값을 max라고 하고,
index = fail_rate.indexOf(max); // max의 fail_rate에서의 index를 index라고 하고
answer.push(index+1); // index+1 를 answer라는 배열에 push한다.
fail_rate.splice(index, 1, -1); // fail_rate의 최댓값을 음수인 -1로 교체해준다.
}
// ------------------------------------------------------------------------------------------------------
return answer;
}
'코딩테스트 > LV. 1' 카테고리의 다른 글
LV. 1 :: 크레인 인형뽑기 게임 (0) | 2023.01.30 |
---|---|
LV. 1 :: 신규 아이디 추천 (0) | 2023.01.30 |
LV. 1 :: 약수의 개수와 덧셈 (0) | 2023.01.29 |
LV. 1 :: 시저 암호 (0) | 2023.01.29 |
LV. 1 :: 로또의 최고 순위와 최저 순위 (0) | 2023.01.28 |
댓글