최대 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으로 바꾸는 좋은 방법이 있다는 것을 알게되었습니다.

🔔포스팅 공지
개인 공부 기록용 블로그 입니다.
잘못된 부분이 있을 시 메일이나 댓글로 지적해주시면 감사드리겠습니다 :)

댓글남기기