알고리즘/프로그래머스 - JS

[프로그래머스-JS] level.1 폰켓몬

개발자성장기 2022. 7. 4. 04:13
반응형

 

https://programmers.co.kr/learn/courses/30/lessons/1845

 

코딩테스트 연습 - 폰켓몬

당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.

programmers.co.kr

 

 

 

 

이것은 너무 어렵게 생각했다. 

그리고 바로 생각나는 대로 진행했지만 더 좋은 방법이 있었다. 

 

 

 

 

나의코드 

 

 

function solution(nums) {
    var answer = 0;
    const 뽑아야하는포켓몬수 = Math.floor(nums.length/2)
    const 객체로변환 = nums.reduce((acc, cur) =>{
        
        acc[cur] = (acc[cur] || 0) + 1;
        return acc;
    }, {})
    const 포켓몬종류수 = Object.keys(객체로변환).length
    return 뽑아야하는포켓몬수 < 포켓몬종류수 ? 뽑아야하는포켓몬수 : 포켓몬종류수 ;
}

 

 

다른 사람 풀이 

 

function solution(nums) {
  const max = nums.length / 2;
  const arr = [...new Set(nums)];

  return arr.length > max ? max : arr.length
}

 

 

 

이거 더 편한 것 같다. 

 

일단 이것처럼 굳이 정수로 바꾸지 않아도 될 것 같다. 

그리고 set으로 중복을 제거해준뒤 다시 배열로 만들면 중복되지 않은 것들만 남기에 

length를 한다면 몇 종류가 있는지 알 수 있느니 바로 계산하면되니 더 편리한 것 같다. 

반응형