[Lv.1]폰켓몬

Jihyun-Jeon·2022년 3월 24일
0

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

🔶내가 푼 방법

  1. 총 고를 수 있는 갯수와 포켓몬 종류의 수를 구한다.
  2. 둘을 비교한다
    1) 총 갯수 > 종류의 수 → 종류의 수 리턴 리턴
    2) 총 갯수 < 종류의 수 → 총 갯수 리턴
    3) 총 갯수 = 종류의 수 → 둘 중 하나 아무거나 리턴
function solution(nums) {
  const total = nums.length / 2;
  const sortNum = new Set(nums).size;

  return total > sortNum ? sortNum : total;
}

console.log(solution([3, 1, 2, 3])); // 2
console.log(solution([3, 3, 3, 2, 2, 4])); // 3
console.log(solution([3, 3, 3, 2, 2, 2])); // 2

🔶다른 사람이 푼 방법

  • reduce를 사용하여 객체는 키가 중복되지 않는 속성을 이용해 포켓몬 종류를 셈
function solution(nums) {
  const sortObj = nums.reduce((acc, cur) => {
    acc[cur] ? (acc[cur] += 1) : (acc[cur] = 1);
    return acc;
  }, {});

  const sortNum = Object.keys(sortObj).length;
  const totalNum = nums.length / 2;

  return totalNum > sortNum ? sortNum : totalNum;
}

0개의 댓글