Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- findIndex()
- 코딩 어?
- Robo3T 폰트 키우기
- ...점점점문법
- ubuntu타임존
- 리엑트블로거
- 문자열 인터폴레이션
- 시퀄 문법
- Robo3T 글씨키우기
- 우분투 시간 변경
- Robo3T 글씨체 변경
- 레디스 확인
- js 문자열을 문자배열로
- 5.3.8 Modifying Queries
- 객체의 밸류값만 찾기
- indexOf()
- 깃 토큰 만료
- sql like연산자
- 객체의키값만 찾기
- 배열을 객체로
- 객체를 배열로
- sql 문자열 패턴 검색
- lastIndexOf()
- ${변수}
- @Moditying @Query
- search()
- 프론트엔드 스쿨
- 가상컴퓨터마법사
- 스프링 데이타 JPA
- Robo3T 폰트변경
Archives
- Today
- Total
코딩기록
string) sum matrix / 2차원배열을 이중포문으로 변경후 모든 요소 총합 - map, reduce, forEach, for 본문
프론트/JS)코딩테스트
string) sum matrix / 2차원배열을 이중포문으로 변경후 모든 요소 총합 - map, reduce, forEach, for
뽀짝코딩 2024. 9. 23. 23:21728x90
문제 설명
2차원 정수 배열 matrix가 주어지면 모든 요소의 합을 반환하는 함수를 구현한다.
const sumMatrix = matrix => {
// do something
};
console.log(sumMatrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])); // 45
console.log(sumMatrix([])); // 0
풀이
1번 풀이 map + reduce
map은 해당 행의 모든 숫자를 합산 한다. [6, 15, 24]
그 다음 reduce로 [6, 15, 24] 의 값을 하나씩 축적하면서 더하고
그 값을 리턴한다.
const sumMatrix1 = matrix => {
const arr = matrix.map(row => row.reduce((sum, num) => sum + num, 0)).reduce((acc, rowSum) => acc + rowSum, 0);
console.log("arr: ", arr);
return arr;
};
console.log(sumMatrix1([[1, 2, 3], [4, 5, 6], [7, 8, 9]])); // 45
console.log(sumMatrix1([])); // 0
2번 풀이 reduce
flat()메서드로 2차원 배열을 1차원 배열로 평탄화하고
reduce를 이용해 행의 합계를 모두 더한 결과를 반환한다.
// 2번 풀이 reduce
const sumMatrix2 = matrix => {
return matrix.flat().reduce((num, cur) => num + cur, 0);
};
console.log(sumMatrix2([[1, 2, 3], [4, 5, 6], [7, 8, 9]])); // 45
console.log(sumMatrix2([])); // 0
3번 풀이 forEach
flat()으로 2차원 배열을 1차원 배열로 평탄화하고
고차함수 forEach를 += 복합대입연산자를 사용해 합산한 값을 반환한다.
// 3번 풀이 forEach문
const sumMatrix3 = str => {
let sum = 0;
str.flat().forEach(num => {
sum += num
});
return sum;
};
console.log(sumMatrix3([[1, 2, 3], [4, 5, 6], [7, 8, 9]])); // 45
console.log(sumMatrix3([])); // 0
4번 풀이 for문
for문도 먼저 flat메서드로 평탄화를 진행한 다음 시작한다.
[1, 2, 3, 4, 5, 6, 7, 8, 9] 1차원 배열 flatMatrix 길이만큼 반복적으로 요소들을 순회하면서
sum에 합산 후 반환한다.
// 4번 풀이 for문
const sumMatrix4 = matrix => {
const flatMatrix = matrix.flat();
let sum = 0;
for (let i = 0; i < flatMatrix.length; i++) {
sum += flatMatrix[i];
}
return sum;
};
console.log(sumMatrix4([[1, 2, 3], [4, 5, 6], [7, 8, 9]])); // 45
console.log(sumMatrix4([])); // 0
5번 풀이 2중포문
첫 번째 for문은 2차원 배열의 **행(row)**을 순회. [1, 2, 3], [4, 5, 6], [7, 8, 9]
두 번째 for문 은 1차원 배열의 각 행의 요소(열)를 순회 1, 2, 3 / 4, 5, 6 / 7, 8, 9
sum = sum + matrix[i][j];:
- matrix[i][j]는 i번째 행의 j번째 열에 위치한 요소를 나타낸다.
- 각 요소를 sum에 더하여 누적한다.
// 5번 풀이 2중포문
const sumMatrix = matrix => {
let sum = 0;
for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++){
sum = sum + matrix[i][j];
}
}
return sum;
};
console.log(sumMatrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])); // 45
console.log(sumMatrix([])); // 0
-------------
console.log("matrix.length: ", matrix.length); // 3
console.log("matrix[i][j]: ", matrix[i][j]); //1, 2, 3, 4, 5, 6, 7, 8, 9
console.log("matrix[i]: ", matrix[i]); // [1, 2, 3]*3, [4, 5, 6]*3, [7, 8, 9]*3
console.log("matrix[j]>>>>>>: ", matrix[j]); // [1, 2, 3], [4, 5, 6], [7, 8, 9] *3
console.log("matrix[j].length: ", matrix[j].length); // [1, 2, 3]... 배열안 값이 모두 3개라서 3만 나옴.
반응형
'프론트 > JS)코딩테스트' 카테고리의 다른 글
Comments