0%

210614_TIL(심심풀이 코딩 문제)

오늘 한 것

공부한 javaScript 코딩 문제

내적

문제 설명

길이가 같은 두 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의 길이)

제한사항

  • a, b의 길이는 1 이상 1,000 이하입니다.
  • a, b의 모든 수는 -1,000 이상 1,000 이하입니다.

나의 답

1
2
3
4
5
6
7
function solution(a, b) {
const answer = a.reduce((acc, cur, idx) => acc + cur * b[idx], 0);
return answer;
}

solution([1, 2, 3, 4], [-3, -1, 0, 2]); // 3
solution([-1, 0, 1], [1, 0, -1]); // -2
1
2
3
4
5
6
7
function solution(a, b) {
const answer = a.reduce((acc, _, idx) => acc + a[idx] * b[idx], 0);
return answer;
}

solution([1, 2, 3, 4], [-3, -1, 0, 2]); // 3
solution([-1, 0, 1], [1, 0, -1]); // -2
  • 현재값을 명시적으로 사용하지 않고 배열 자체에 접근 가능하다.

행렬의 덧셈

문제 설명

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

제한 조건

행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.

나의 답

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function solution(arr1, arr2) {
const answer = [];

for (let i = 0; i < arr1.length; i++) {
answer[i] = new Array();
for (let j = 0; j < arr1[0].length; j++) {
answer[i][j] = arr1[i][j] + arr2[i][j];
}
}

return answer;
}

console.log(
solution(
[
[1, 2],
[2, 3],
],
[
[3, 4],
[5, 6],
]
)
); // [[4,6],[7,9]]
  • 다차원 배열의 경우 동적으로 자동 생성되지 않았다. 때문에 새로운 2차원 배열을 new Array()로 생성 후 값을 할당했다.
1
2
3
function solution(arr1, arr2) {
return arr1.map((v1, idx1) => v1.map((v2, idx2) => v2 + arr2[idx1][idx2]));
}
  • 물론 for가 아닌 map() 메서드를 중첩해서 해결할 수도 있다.

출처: programmers

Nyong’s GitHub