• TOC {:toc}

이 글은 프로그래머스의 1845번 문제를 JavaScript로 풀이한 것을 모아놓은 글입니다.

일종의 연습 기록이며 제가 정답을 받은 코드와 참고할만한 다른 코드를 같이 기록합니다. 필요한 경우 코드에 대한 해설을 기록합니다만 코드는 통과했어도 해설은 틀릴 수 있기 때문에 가볍게 참고해주시길 부탁드립니다. 피드백은 편하신 방법으로 자유롭게 주시면 감사하겠습니다.

2023.11.16

테스트 통과 시간 메모리
테스트 1 통과 0.03ms 33.5MB
테스트 2 통과 0.03ms 33.4MB
테스트 3 통과 0.03ms 33.5MB
테스트 4 통과 0.03ms 33.4MB
테스트 5 통과 0.03ms 33.4MB
테스트 6 통과 0.04ms 33.6MB
테스트 7 통과 0.04ms 33.5MB
테스트 8 통과 0.03ms 33.4MB
테스트 9 통과 0.03ms 33.5MB
테스트 10 통과 0.03ms 33.6MB
테스트 11 통과 0.03ms 33.4MB
테스트 12 통과 0.08ms 33.5MB
테스트 13 통과 0.09ms 33.4MB
테스트 14 통과 0.07ms 33.5MB
테스트 15 통과 0.08ms 33.5MB
테스트 16 통과 0.57ms 34.3MB
테스트 17 통과 0.54ms 34.2MB
테스트 18 통과 0.38ms 33.9MB
테스트 19 통과 0.29ms 34MB
테스트 20 통과 0.23ms 33.9MB
단계 시작 시각 끝난 시각 걸린 시간
문제 이해 00:34:10 00:35:05
풀이 생각 00:35:07 00:35:41
코딩 00:35:42 00:41:14
function solution(nums) {
    return Math.min(new Set(nums).size, nums.length / 2);
}

아이디어 & 풀이

가장 많은 종류의 폰켓몬을 선택하려면 중복없이 선택하면 된다. 즉 중복없이 정리한 폰켓몬의 종류의 수가 가장 많은 종류의 폰켓몬을 선택하는 수이며 이 값이 선택할 수 있는 최대 폰켓몬의 마리수 (N/2)를 초과하는 경우해는 N/2를 반환하면 된다.

  • Set을 이용해서 중복을 제거하고 size 값을 이용해 폰켓몬의 종류의 수를 얻는다.
  • Math.min을 이용해 폰켓몬의 종류와 N/2중 작은 값을 반환한다.