-
[프로그래머스 Level 1] 폰켓몬 (JavaScript)Coding Test/JavaScript 2024. 11. 25. 17:17
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/1845
입출력 예
nums result [3,1,2,3] 2 [3,3,3,2,2,4] 3 [3,3,3,2,2,2] 2 풀이
function solution(nums) { const setArr = new Set(nums); return Math.min(setArr.size, nums.length/2); }
함수 solution은 한 개의 매개변수를 받는다.
1. 폰켓몬의 종류를 나타내는 숫자들이 포함된 배열 = nums
이 문제의 특징은 다음과 같다.
1. 두 명의 사람이 폰켓몬을 선택하는데 ,각 사람은 같은 폰켓몬을 선택할 수 없다.
2. 한 사람이 선택할 수 있는 폰켓몬의 최대 개수는 nums.length / 2 이다.
3. 목표는 두 사람이 선택할 수 있는 폰켓몬 종류의 최대 수를 반환하는 것이다.
나는 먼저 Set 객체를 생성했다.
Set은 중복되지 않은 값만 저장하는 자료구조이다.
nums 배열을 Set으로 변환함으로써 배열에 포함된 중복된 폰켓몬 종류를 제거하고,
각 폰켓몬의 고유한 종류만을 담은 setArr를 만들었다.
이러한 setArr의 고유 종류의 수는 setArr.size 를 통해 알 수 있다.
이후 선택할 수 있는 최대 폰켓몬의 종류 수를 반환시켰다.
return Math.min(setArr.size, nums.length / 2)
setArr.size는 nums 배열에서 고유한 폰켓몬 종류의 개수이고,
nums.length / 2 는 두 사람이 각자 선택할 수 있는 폰켓몬 최대의 수이다.
최소값 Math.min을 사용한 이유는?
두 사람이 중복 없이 선택해야 하므로
선택할 수 있는 개수는 setArr.size, nums.length / 2 중 작은 값이다.
'Coding Test > JavaScript' 카테고리의 다른 글
[프로그래머스 Level 1] 기사단원의 무기 (JavaScript) (0) 2024.12.02 [프로그래머스 Level 1] 2016년 (JavaScript) (0) 2024.12.02 [프로그래머스 Level 1] 카드 뭉치 (JavaScript) (1) 2024.11.25 [프로그래머스 Level 1] 추억 점수 (JavaScript) (0) 2024.11.25 [프로그래머스 Level 1] 명예의 전당 (1) (JavaScript) (0) 2024.11.25