230330_Algorithm

majungha·2023년 4월 27일
1

알고리즘

목록 보기
12/71

오늘의 알고리즘 👍

📝 1. 내적


  • 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다.
  • a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.
  • 이때, a와 b의 내적은 a[0] \* b[0] + a[1] \* b[1] + ... + a[n-1] \* b[n-1] 입니다. (n은 a, b의 길이)

▷ 입출력 예

solution([1,2,3,4],[-3,-1,0,2]) // 3
solution([-1,0,1],[1,0,-1]) // -2

▷ 내 풀이

function solution(a, b) {
  let answer = 0;
  for (let i = 0; i < a.length; i++) {
    answer += a[i] * b[i];
  }
  return answer;
}

▷ map reduce 매서드 사용 풀이

function solution(a, b) {
  const answer = a
    .map((num, i) => {
      return num * b[i];
    })
    .reduce((acc, cur) => {
      return acc + cur;
    }, 0);
  return answer;
}

▷ reduce 매서드 사용 풀이

function solution(a, b) {
  return a.reduce((acc, cur, i) => {
    return acc + cur * b[i];
  }, 0);
}

📝 2. 행렬의 덧셈

  • 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다.
  • 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.

▷ 입출력 예

solution([[1,2],[2,3]],[[3,4],[5,6]]) // [[4,6],[7,9]]
solution([[1],[2]],[[3],[4]]) // [[4],[6]]

▷ 내 풀이

function solution(arr1, arr2) {
  let answer = [[]];
  for (let i = 0; i < arr1.length; i++) {
    for (let j = 0; j < arr1[i].length; j++) {
      const sum = arr1[i][j] + arr2[i][j];
      if (!answer[i]) {
        answer[i] = [];
      }
      answer[i][j] = sum;
    }
  }
  return answer;
}

▷ map 매서드 사용 풀이

function solution(arr1, arr2) {
  return arr1.map((numArr, i) => {
    return numArr.map((num, j) => {
      return num + arr2[i][j];
    });
  });
}

출처: 프로그래머스
출처: 코드캠프

profile
개발자 블로그 / 항상 겸손한 자세로 배우면서 성장하자 할 수 있다!

0개의 댓글