[프로그래머스] 폰켓몬

ppyororong_0_0·2022년 1월 12일
0

프로그래머스

목록 보기
1/19
post-custom-banner

[프로그래머스 - 1단계] 폰켓몬 문제

https://programmers.co.kr/learn/courses/30/lessons/1845?language=javascript

📝 문제 설명

N마리의 폰켓몬 중에서 N/2 마리 폰켓몬 선택하려고 함
종류를 달리하여 가장 많은 폰켓몬을 선택하는 방법을 찾아 그 최대 개수를 return

  • 폰켓몬 번호가 같은 경우 한 개의 폰켓몬만 가져갈 수 있음

💡 풀이

  1. 한 개의 폰켓몬만 가져갈 수 있다고 하였기 때문에 Set 객체를 이용하여 nums배열의 중복요소를 제거함
  2. 중복요소가 제거된 Set객체를 배열로 다시 변환
  3. 반복문을 통해서 answer배열에 폰켓몬들을 넣어줌
  4. 이 때, answer 배열의 길이가 N/2를 넘어가면 안되기 때문에 N/2보다 크면 answer배열에서 빼냄.
  5. answer 배열의 길이가 최종 답!

🖥️ 코드

function solution(nums) {
    const answer = [];
    const n = nums.length / 2;
    const newNums = new Set([...nums]);
    const copyNums = [...newNums];
  
    for (let x of copyNums) {
        answer.push(x);
        if (answer.length > n) answer.pop();
    }
  
    return answer.length;
}

❗ 다른 사람 풀이

function solution(nums) {
  const max = nums.length / 2;
  const arr = [...new Set(nums)];

  return arr.length > max ? max : arr.length
}

배운 점

  • 내가 여러 줄에 걸쳐서 만든 코드를 한 번에 arr배열로 만들었다는 점
    (흐음... 이렇게 간단한 걸 왜 생각하지 못했을까?)
  • 답을 도출하기 위해 나처럼 반복문을 사용한 게 아니라 삼항연산자를 이용하여 한 번에 결과값을 반환함
profile
안녕하세요!
post-custom-banner

0개의 댓글