[프로그래머스] 폰켓몬
2023. 3. 2. 14:04ㆍAlgorithm
n개의 폰켓몬의 종류번호가 주어짐 [3,1,2,3] 처럼, 이 중 n/2개의 폰켓몬을 가져갈 수 있을 때
가장 많은 종류의 폰켓몬을 가져갈 때, 종류의 수 return
폰켓몬을 종류별로 나누었을 때,
만약, 종류의 수가 n/2보다 크다면 가져갈 수 있는 종류의 수는 n/2일 것이다.
만약, n/2가 종류의 수보다 크다면 가져갈 수 있는 종류의 수는 전체 종류 수 일 것이다.
=> n/2와 폰켓몬 종류의 수 중 더 작은 값을 return !
해시를 사용해서 푼!
function solution(nums) {
let map = new Map()
for(let i =0; i<nums.length; i++){
map.set(nums[i], (map.get(nums[i])||0)+1)
}
return nums.length/2>map.size?map.size:nums.length/2
}
생각해보니, 폰켓몬의 종류의 수만 구하면 되는 것!....
더 간단히 set을 사용하여 풀 수 있다.
set의 중복 값을 가지지 않는다는 특성을 사용하였다.
function solution(nums){
let set = new Set(nums)
return nums.length/2>set.size?set.size: nums.length/2
}
'Algorithm' 카테고리의 다른 글
[프로그래머스] 프린터 (0) | 2023.03.02 |
---|---|
[프로그래머스] 베스트앨범 (0) | 2023.03.02 |
[프로그래머스] 완주하지 못한 선수 (1) | 2023.03.02 |
해시란? Map과 Object의 차이 (0) | 2023.03.01 |
[프로그래머스] 괄호 회전하기 (1) | 2023.02.22 |