Lv 1. 포켓몬

박하린·2021년 6월 6일
0

프로그래머스

목록 보기
21/42

📚 문제

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

💡 접근

일단 배열에서 종류가 겹치는 포켓몬들을 제거하고,
N/2 마리의 포켓몬을 가져갈 수 있다고 했으니까 겹치지 않는 유일한 포켓몬의 수와 N/2를 비교했을 때 둘 중 작은 값이 정답이 된다.

왜냐면 예를 들어 겹치는 포켓몬을 제거했을 때 배열안에 [1,4,5,6]이 있고 N = 6이라면 결국 3마리 밖에 가져가지 못하니까 N/2가 정답이 되는 것이다.

⌨️ 코드

function solution(nums){
    let uniNums = nums.filter((v,idx) => idx === nums.indexOf(v))

    return uniNums.length < nums.length/2 ? uniNums.length : nums.length / 2
}

📝 리뷰

배열에서 중복된 요소를 제거하고 유니크한 배열을 만들 때 filter 메소드를 사용하였지만

const arr = [...new Set(nums)];

와 같이 Set 객체 안에는 중복 요소가 들어갈 수 없는 성질을 이용해서 코드를 작성할 수도 있다.

profile
깃허브: https://github.com/khakaa

0개의 댓글

관련 채용 정보