[Lv.1]同じ数字が好きではありません.別々の数字の配列、2つの整数の間の和

9699 ワード

<同じ数字は要らない>


質問:https://programmers.co.kr/learn/courses/30/lessons/12906

🔶私のやり方

  • reduceループ配列を使用すると、現在の要素が現在の要素と異なる場合にのみ、新しい配列に蓄積されます.
  • function solution(arr) {
      return arr.reduce((acc, cur) => {
        if (acc[acc.length - 1] !== cur) {
          acc.push(cur);
        }
        return acc;
      }, []);
    }
    // 실행코드
    // console.log(solution([1, 1, 3, 3, 0, 1, 1])); // [1,3,0,1]
    // console.log(solution([4, 4, 4, 3, 3, 4, 4])); // [4,3,4]

    🔶その他の方法を使用-フィルタ

    function solution(arr) {
      return arr.filter((el, idx) => el !== arr[idx + 1]);
    }

    🔶フィードバック


    パラメータが配列の場合、
    同じ長さの配列を返すときはmap、異なる長さの配列を返すときはfilterを使用することをお勧めします

    <区切り数字>


    質問:https://programmers.co.kr/learn/courses/30/lessons/12910

    🔶私のやり方

  • アレイは長さの異なる新しいアレイを返すので、フィルタ
  • を使用する.
    function solution(arr, divisor) {
      const divArr = arr.filter((el) => el % divisor === 0).sort((a, b) => a - b);
      return divArr.length ? divArr : [-1];
    }
    //실행코드
    //console.log(solution([5, 9, 7, 10], 5)); // [5, 10]
    //console.log(solution([2, 36, 1, 3], 1)); // [1, 2, 3, 36]
    //console.log(solution([3, 2, 6], 10)); // [-1]

    <2つの整数の和>


    質問:https://programmers.co.kr/learn/courses/30/lessons/12912

    🔶私のやり方

  • 回繰り返す必要があるのでfor文を使用します.
  • function solution(a, b) {
      const first = Math.min(a, b);
      const second = Math.max(a, b);
      let result = 0;
    
      for (let i = first; i <= second; i += 1) {
        result += i;
      }
    
      return result;
    }
    // 실행코드
    //console.log(solution(3, 5)); // 12
    //console.log(solution(3, 3)); // 3
    //console.log(solution(5, 3)); // 12

    🔶別のメソッド-while文の使用

    function solution(a, b) {
      let result = a < b ? a : b; // 3
      while (a !== b) {
        result += a < b ? (a += 1) : (b += 1); // 3+ 4+ 5
      }
      return result;
    }