728x90
[Javascript] (프로그래머스 level 1) 실패율
💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다.
내 풀이
function solution(N, stages) {
// 1) 각 스테이지별로 실패한 사람의 수 카운트
const failCount = [];
for (let i = 1; i <= N; i++) {
failCount[i] = stages.filter((stage) => i === stage).length;
}
// 2) 각 스테이지별로 실패율 계산 ([stage, 실패율])
const failRate = [];
for (let i = 1; i <= N; i++) {
failRate[i] = [i, failCount[i] / stages.filter((stage) => stage >= i).length];
}
console.log(failRate);
// 3) 실패율이 높은 순서로 인덱스 뽑기
return failRate.sort((a, b) => b[1] - a[1]).map((el) => el[0]).filter((el) => el > 0);
}
- 2시간 가까이 걸렸습니다. (직접 해결 못함)
- 맵으로도 풀고 지지고 볶고 했는데, 배열과 내장함수로 간단하게 풀 수 있는 문제였네요. 풀이를 알고 나니 쉬운 문제였군요 😭
다른 사람 풀이
function solution(N, stages) {
let result = [];
for(let i=1; i<=N; i++){
let reach = stages.filter((x) => x >= i).length;
let curr = stages.filter((x) => x === i).length;
result.push([i, curr/reach]);
}
result.sort((a,b) => b[1] - a[1]);
return result.map((x) => x[0]);
}
- 로직이 거
의 비슷한데 다른 사람 풀이가 훨씬 깔끔하네요.- 1) 콜백함수 내부의 변수는 x, y, a, b 이런식으로 놓는게 el 보다 훨씬 깔끔하네요. 함수형 프로그래밍 형식이라 진짜 함수식처럼 x = x[0] 이런게 이뻐보이는 것 같습니다.
- 2) 복잡한 계산을 변수에 대입해서 식을 안보고도 한 눈에 알아 볼 수 있도록 만들었네요. 정말 잘 짠 코드인 것 같습니다.
배운 점, 느낀 점
- 숫자를 카운트하거나, 인덱스를 적어두고 반환하고 싶을 때 거의 항상 HashMap을 사용했었는데, 2차원 배열로 간단하게 적을 수 있다는걸 오늘 처음 깨달았습니다.
- 2차원 배열로 하면 좋은 점이 그냥 하던대로
배열.메서드().메서드().메서드();
로 풀어 낼 수 있다는 장점이 있습니다. 허허허허 이렇게 또 하나 배워갑니다.. 정말 문제 좋네요.
'Coding Test > JavaScript' 카테고리의 다른 글
[Javascript] (프로그래머스 level 1) 키패드 누르기 (0) | 2022.07.01 |
---|---|
[Javascript] (프로그래머스 level 1) 내적 (0) | 2022.07.01 |
[Javascript] (프로그래머스 level 1) 모의고사 (0) | 2022.06.30 |
[Javascript] (프로그래머스 level 1) 체육복 (0) | 2022.06.30 |
[Javascript] (프로그래머스 level 1) 비밀 지도 (0) | 2022.06.30 |
[Javascript] (프로그래머스 level 1) 문자열 내 마음대로 정렬하기 (0) | 2022.06.30 |
[Javascript] (프로그래머스 level 1) 소수 찾기 (0) | 2022.06.30 |
[Javascript] (프로그래머스 level 1) 예산 (0) | 2022.06.30 |
댓글