알고리즘_행렬의 덧셈

정재연·2022년 1월 18일
0

알고리즘

목록 보기
11/23

행렬의 덧셈

1. 문제 설명

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

2. 제한 조건

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

3. 입출력 예

arr1arr2
[[1,2],[2,3]][[3,4],[5,6]]
[[1],[2]][[3],[4]]

4. 나의 풀이

arr1과 arr2 를 풀어서 각각 행과 열끼리 더한 값을 다시 배열에 넣어 리턴하다
1. arr1를 map으로 풀자 인자로 현재 처리할 요소, index추가
2. arr1속 배열의 length 만큼 또한번 map 사용 역시 처리할 요소,index 추가
3. 2.의 현재처리한 요소에 arr2의 값 더해주자
  • 이중 map이 돌아가는 것이 잘 이해가 안간다면.. 이런식으로 눈에 보이도록 해서 테스트 해봐도 좋을 것 같다.
  	let arr1 = [[1,2],[2,3]]	
	let arr2 = [[3,4],[5,6]]
	arr1.map((list,index)=>{
	  console.log(`arr1 ${list}`)
	  list.map((l,i)=>{
		console.log(`arr2 ${arr2[index][i]}`)
	  })
	})

        //  arr1 1,2
        //  arr2 3
        //  arr2 4
        //  arr1 2,3
        //  arr2 5
        //  arr2 6
let arr1 = [[1,2],[2,3]]	
let arr2 = [[3,4],[5,6]]
let answer = []
arr1.map((list,index)=>{
  	// list = [1,2]  [2,3]
	list.map((l,i)=>{
      	// l = 1,2,2,3
		l + arr2[index][i])
	})
})

l + arr2[index][i])의 값을 담아야 할 빈배열 totallist 필요 했다.
여기서 나는 큰 실수를 했다. totallist의 위치를 map 바깥쪽에 작성해서 불러왔다.

let arr1 = [[1,2],[2,3]]	
let arr2 = [[3,4],[5,6]]
let answer = []
let totallist = []			// 👈🏻 요기 재앙의 시작 😀

arr1.map((list,index)=>{
	list.map((l,i)=>{
		totallist[i]=l + arr2[ind][i]
	})
	answer[ind]=totallist
})

//[4,6,7,9] 
// 도출해야하는 정답 = [[4,6],[7,9]]

2번째 map 안에 totallist 위치하고 행렬의 값을 저장한뒤,
1번재 map 안에 answer에 넣으면 원하는 결과 값이 나오지 않았다.
해결 방법은 간단했다.
totallist 변수 선언하는 위치를 1번 map 안으로 변경해주면 답이 잘 나왔다.

let arr1 = [[1,2],[2,3]]	
let arr2 = [[3,4],[5,6]]

function solution(arr1, arr2) {
  let answer = []
  arr1.map((list,ind)=>{
    // totallist 의 위치 때문에 답이 안나오고 있었음
    //scope 의 중요성!!!
    let totallist = []
    list.map((l,i)=>{
      totallist.push(l + arr2[ind][i])
    })
    answer[ind]=totallist
  })
  return answer;
}

5. 문제를 풀고 느낀점

scope의 중요성을 직접적으로 체감(맴고생😮‍💨)할 수 있었다.
하나하나 잘 풀어 나갔는데 마지막에 길을 잃고 헤매고 있었다.
처음에는 감이 안왔는데, 이런 경험이 쌓이고 나면 문제를 해결할때, 여러 경우를 생각하며 해결 할 수 있을 것 같다라는 생각이 들었다.
또, 내가 짠 코드가 어떻게 돌아가는지 세세히 고민했어야 쉽게 풀렸을 것 같다.
세심히 생각을 해야 겠다.

profile
코린이 개발자 :)

0개의 댓글