[Lv.1] 로또의 최고 순위와 최저 순위
✔️ 문제
https://school.programmers.co.kr/learn/courses/30/lessons/77484
✔️ 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
function solution(lottos, win_nums) {
const zeroCnt = lottos.reduce((acc, cur) => acc + (cur === 0 && 1), 0);
const lowCnt = lottos.reduce(
(acc, cur) => acc + (win_nums.includes(cur) && 1),
0
);
const answer = [
lowCnt + zeroCnt < 2 ? 6 : 7 - (lowCnt + zeroCnt),
lowCnt < 2 ? 6 : 7 - lowCnt,
];
return answer;
}
✔️ 풀이
reduce를 활용해보았습니다. 풀고나서 찾아보니 Array.includes()
대신 Set.has()
를 사용하면 시간복잡도가 O(n) 에서 O(1)로 줄어든다고 합니다.
위 코드에 적용해서 푼 것은 아니지만, 중복값이 없는 배열은 Set으로 바꾸는 좋은 방법이 있다는 것을 알게되었습니다.
🔔포스팅 공지
개인 공부 기록용 블로그 입니다.
잘못된 부분이 있을 시 메일이나 댓글로 지적해주시면 감사드리겠습니다 :)
댓글남기기