[Lv 1]ポンキモン


プログラマ


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

私の答え

  • を持ち去ることができるケースの種類の最高価格を見つけなければならない.
  • nums.lengthとcntが0より大きい場合、cnt--とspecies++を行い、numsの0番目の要素と他の要素のみをフィルタし、numに再割り当てします.
  • 持ち運べる動物が0になったりnumsが空の配列になったりすれば繰り返しを止めて種(持ち運べる種類数)に戻ります.
  • function solution(nums){
      let cnt = (nums.length)/2; //데려갈 수 있는 동물 수
      let species = 0; //데려간 종류 수
      while(nums.length && cnt){
        cnt--;
        species++;
        nums = nums.filter(el => el !== nums[0]);
      }
      return species;
    }

    他人の解答

  • の新しいSetとSpread構文を使用して、アレイの重複を排除する新しいアレイ(ARR)を作成します.
  • arr.lengthが持ち去ることができる動物の数(max)より大きい場合、maxが返され、そうでない場合、arr.lengthが返される.(持ち帰り可能な最低価格を返す必要がある)
  • function solution(nums){
      const max = nums.length/2;
      const arr = [...new Set(nums)];
      
      return arr.length>max ? max : arr.length;
    }

    new Set([iterable])


    Setオブジェクトは、パラメータとして入力された要素を巡回して新しいオブジェクトを作成し、重複を排除します.すなわち、ある値はセット内で一意である.ただし、同じ配列またはオブジェクトの異なる値を参照する場合は、この値を追加できます.(以下の例を参照)NaNおよびUndefindもSetに格納することができる.
  • iterable
    重複可能なオブジェクトが渡されると、すべての要素が新しいセットに追加されます.パラメータが指定されていないかnullが渡されていない場合、新しいセットは空になります.
  • 戻り値
    新しいSetオブジェクトを返します.配列にパラメータが含まれている場合は、展開構文を使用してsetをArrayに変換します.
  • let mySet = new Set();
    //add()
    mySet.add(1); // {1}
    mySet.add(5); //{1,5}
    mySet.add(5); //{1,5} --> 이미 존재하는 값은 추가되지 않음
    mySet.add('some text'); //{1,5,'some text'}
    let o = {a:1, b:2}; 
    mySet.add(o); //{1,5,'some text',{a:1, b:2}}
    mySet.add({a:1, b:2}); //{1,5,'some text',{a:1, b:2},{a:1, b:2}}
    //o와 다른 객체를 참조하므로 추가 가능
    //has()
    mySet.has(1); //true
    mySet.has(2); //false
    mySet.has(Math.sqrt(25)); //true
    mySet.has('SOME TEXT'.toLowerCase()); //true
    mySet.has(o); //true
    //.size
    mySet.size; //5
    //delete()
    mySet.delete(5); //{1,'some text',{a:1, b:2},{a:1, b:2}}

    reference


    https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Set