코딩테스트/프로그래머스

프로그래머스 폰켓몬

의현 2025. 4. 14. 16:09

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

문제 풀이

폰켓몬의 종류와 갯수를 dict 형태로 관리하도록 변환

answer는 nums 배열의 길이 / 2 만큼의 폰켓몬을 가질 수 있음

dict으로 변환한 keys의 종류가 answer보다 작다면 선택할 수 있는 폰켓몬이 더 적다는 의미로 answer에 keys의 길이를 저장해주면 됨

-> 문제를 해결하고 깨달은 사실...

  • 어차피 dict의 keys의 갯수만 파악할거면 dict형태가 아니 배열을 set배열로 만들어서 .size를 이용해 단순히 set배열의 길이를 파악하면 쉽게 해결할 수 있음
// dict을 이용할 경우
function solution(nums) {
    let answer = Math.floor(nums.length / 2);
    let nums_dict = {};
    for(num of nums) {
        if (nums_dict[num]) {
            nums_dict[num]++;
        } else {
            nums_dict[num] = 1;
        }
    }
    
    let max_dict_len = Math.floor(Object.keys(nums_dict).length);
    if (max_dict_len < answer) {
        answer = max_dict_len;
    }
        
    return answer;
}

// set을 이용할 경우
function solution(nums) {
    let answer = Math.floor(nums.length / 2);
    let nums_set = new Set(nums);
    
    if (nums_set.size < answer) {
        answer = nums_set.size;
    }
        
    return answer;
}

결론

문제를 해결하기위해 다양한 방법이 존재하고 적절한 방법을 선택하는 능력도 중요한 것 같다고 느낌.