코딩테스트/프로그래머스
프로그래머스 폰켓몬
의현
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;
}
결론
문제를 해결하기위해 다양한 방법이 존재하고 적절한 방법을 선택하는 능력도 중요한 것 같다고 느낌.