본문 바로가기

코테/프로그래머스

[프로그래머스] 폰켓몬

728x90

[Level 1] 폰켓몬

문제 링크

구분

코딩테스트연습 > 해시

풀이 요약

배열에서 중복을 제거하고 중복 제거 후, 배열의 길이와 배열 길이의 절반 중 작은 값을 반환하는 해시문제

나의 풀이

function solution(nums) {
    let temp=[...new Set(nums)]
    let max=nums.length/2
    return temp.length>max ? max : temp.length
}

이 문제는 해시를 사용하여 중복된 값을 쉽게 제거할 수 있기 때문에 해시문제로 분류됩니다.

해시를 사용하면 평균적으로 O(1)의 시간복잡도로 중복을 제거할 수 있기 때문에 효율적입니다.

Javascript에서 Set 객체는 해시와 유사한 구조로 중복된 값을 제거합니다.

Set을 이용하여 배열의 중복된 값을 제거하고 max를 사용하여 nums의 절반 길이를 나타냅니다.

만약, 중복을 제거한 배열의 길이가 최대 선택 가능한 폰켓몬 수보다 크면 max를, 그렇지 않으면 중복 제거된 배열의 길이를 반환합니다.

728x90