티스토리 뷰
/* get input */
const N = 5;
const stages = [2, 1, 2, 6, 2, 4, 3, 3];
/* get input end*/
/* solve */
function solution(N, stages) {
var answer = [];
let itemCount = [];
let rateArr = [];
stages.map((item) => {
const findIndex = itemCount.findIndex((itemCountItem) => {
return +itemCountItem.title === +item;
});
if (findIndex === -1) {
itemCount.push({ title: item, count: 1 });
} else {
itemCount = [
...itemCount.slice(0, findIndex),
{ title: item, count: itemCount[findIndex].count + 1 },
...itemCount.slice(findIndex + 1),
];
}
});
const sortData = itemCount.sort((a, b) => a.title - b.title);
let user = stages.length;
sortData.map((item, i) => {
rateArr.push({ title: item.title, rate: item.count / user });
user = user - item.count;
});
rateArr.sort((a, b) => {
return b.rate - a.rate;
});
console.log(rateArr);
rateArr.map((item) => {
if (item.title !== N + 1) answer.push(item.title);
});
const lastArr = Array.from({ length: N }, (_, i) => i + 1);
lastArr.map((item) => {
if (answer.indexOf(item) === -1) {
answer.push(item);
}
});
return answer;
}
/* solve end*/
/* print output */
console.log(solution(N, stages));
/* print output end*/
findIndex와 map , Array.from 등으로 객체가 없으면 {title : item , count :1 }을 생성하도록 했고 있다면 count를 더하는 식으로 먼저 구해준 후 stages.length 를 let 형식으로 두고 하나씩 비교해가며 stages.length - item.count 를 하여 실패율을 구했습니다.
그후 Array.from으로 1~N까지의 배열을 만들어서 answer에 있는 것과 없는 것을 비교하여 push 해주었습니다.
'알고리즘 > 프로그래머스 문제풀이' 카테고리의 다른 글
프로그래머스 NodeJS Level 1 : 모의고사 (0) | 2022.03.16 |
---|---|
프로그래머스 NodeJS Level 2 : 멀쩡한 사각형 (0) | 2022.03.03 |
프로그래머스 NodeJS Level 1 : 신고 결과 받기 (0) | 2022.03.03 |
프로그래머스 NodeJS Level 2 : 멀쩡한 사각형 (0) | 2021.10.28 |
프로그래머스 NodeJS Level 1 : 신규 아이디 추천 (0) | 2021.09.12 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프론트앤드
- javascript
- env
- createPortal
- NextRequest
- import/order
- 프리온보딩
- 초보
- 우아한테크코스
- C언어
- 북클럽
- 노마드코더
- nextjs
- React
- 원티드
- WSL2
- 스토리 북
- error
- 윤성우 열혈C프로그래밍
- jest
- 아차산
- NextApiRequest
- electron
- Storybook
- 노개북
- 위코드
- TopLayer
- CLASS
- nodejs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함