일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- MySQL
- 코플릿
- select
- 역행자
- 개발자의 책장
- 배열
- SQL
- 블록체인
- 코딩테스트
- for문
- 자바스크립트
- Hackerrank
- 재귀함수
- join
- Where
- Algorithms
- 정규표현식
- Developer_JoyKim
- 최강의 인생
- array
- JavaScript
- Programmers
- 개발자_조이킴
- 코드스테이츠
- 알고리즘
- node.js
- array.slice()
- 프로그래머스
- array.push()
- 코딩공부
Archives
- Today
- Total
CodingSpace
프로그래머스#53(Lv.1)_실패율 본문
실패율 - 2019 KAKAO BLIND RECRUITMENT
다른 분들이 하신것 보고 배우고 또 배우자! (reduce메소드, 2차원 배열 대신 객체를 사용!)
포기하지말고 계속해서 공부하자!
화이팅:)
// 프로그래머스 - 실패율 function solution(N, stages) { // stages에는 1부터 N+1까지 있을 수 있음 // 사용자 총 명수 let numberOfUser = stages.length // 현재 stage를 나타내는 변수 level 선언, 1을 할당 let level = 1 // 각 stage의 실패율을 담을 배열선언 let result = [] // 주워진 stage를 다 돌았으면 while문을 종료 while(level < N+1) { // 현재 level에서 실패한 사용자를 세워줄 변수 cnt 선언 let cnt = 0 for(let i = 0; i < stages.length; i++) { // 만약 i번째 사용자가 현재 level에 있다면, 실패했으므로 cnt++ if(stages[i] === level) { cnt++ } } // 만약 실패자가 존재한다면 if(cnt > 0) { let failRatio = (cnt / numberOfUser) // 총 사용자 수를 cnt만큼 빼준다 numberOfUser = numberOfUser - cnt // 현재 level과 실패율을 배열 result에 담는다 result.push([level, failRatio]) } // 만약 실패자가 존재하지 않는다면 else if (cnt === 0) { // 만약 현재 level에서 사용자가 모두 성공했다면, result에 현재 level과 실패율 0을 담는다 result.push([level, 0]) } // 다음 stage로 넘어간다 level++ } // 실패율을 기준으로 내림차순으로 정렬 let newResult = result.sort((a,b) => b[1] - a[1]).map((a) => {return a[0]}) return newResult } |
<다른분의 solution>
|
'프로그래머스 > Level1' 카테고리의 다른 글
[에라토스테네스의 체] 소수 찾기 (0) | 2023.05.29 |
---|---|
프로그래머스#54(Lv.1)_크레인 인형뽑기 게임 (0) | 2021.11.09 |
프로그래머스#52(Lv.1)_폰켓몬 (0) | 2021.11.05 |
프로그래머스#51(Lv.1)_3진법 뒤집기 (0) | 2021.11.04 |
프로그래머스#50(Lv.1)_모의고사 (0) | 2021.11.04 |
Comments