오늘도 하루종일 코딩테스트! 어제보다 나을 줄 알았는데 훨~씬 어려웠다..ㅎㅎ..
그래도 어제 이중for문 이해 하고 자서..! 오늘 이중 for문으로 문제풀때 한 10%정도 더 이해가 빨랐던 것 같다! 그리고 그 문제를 주애
님께서 map으로 풀어주셨는데.. 와! map 개쩐다..! 진짜 이중 for문보다 훨~씬 이해하기 쉬웠다. (물론 설명들어서 ㅎㅎㅎㅎㅎㅎ)
그리고 오늘 다른 팀원분들 블로그 가서 구경하는데.. 오! 다들 프론트 개발자 답게 깔끔하고 예쁘게 꾸며놓으셨다..! 난 조잡 그 자체..! ㅋㅋㅋㅋㅋㅋㅋㅋ
음.. 일단 양으로 승부하자..!
그리고 진환
님 블로그 가서 얕은복사 vs 깊은 복사를 이해하고 왔다. 퍼가요~!
진짜 끝까지 아리까리했는데 잘 설명해놓으셔서 레퍼런스에 저장! ㅋㅋㅋㅋㅋㅋ
그리고 설희
님이 질문 많이 해주셔서 나도 다시 복습하면서 알고리즘 공부 다시 할 수 있었다!! 국비때도 느낀거지만, 이해할때까지 질문하고 이해 될때까지 설명하는게 정말 좋은 공부법인 것 같다!! 물론 질문했을때 내가 바보 멍청이가 된 것 같은 느낌이지만 ㅠ.. 그걸 견뎌야 발전할 수 있는 것 같다..!! 나도 모르는 건 넘어가지 말고 꼭 질문 해야지! 지금은 바보 멍청이지만 내일은 좀 더 나은 바보 멍청이 일듯..!!!
//예제 arr1 = [[1,2],[2,3]] arr2 =[[3,4],[5,6]]
function solution(arr1, arr2) {
let answer = []; // 빈배열 만들기
for(let i=0; i <arr1.length; i++){
//배열의 길이만큼 돌린다. 크기가 같은 두 행렬의 덧셈이기 때문에 arr1.length로 돌리나 arr2.length로 돌리나 상관없다.
//arr1.length는 2이다. arr[0] = [1,2] / arr[1] = [2,3]
answer[i] = []; //2차원 빈 배열을 하나 만들어 준다.
// answer[0] 안에 [] 만들고, answer[1] 안에 []만들고 이런식이다..
//여기서는 [[],[]] 이렇게 만들어줌
for(let j=0; j<arr1[i].length; j++){
//arr1[i]의 길이만큼 돌린다.
//이것도 arr2[i].length라고 해도 무방하다.
//여기서 arr[0]의 length는 2, arr[0] = [1,2]
//arr[0][0] 은 1, arr[0][1]은 2
answer[i][j] = arr1[i][j] + arr2[i][j];
//arr1[0] = [1,2]
//arr1[0][0] = 1
//arr2[0] = [3,4]
//arr2[0][0] = 3
//answer[0][0] = 4
//현재 answer 배열 [[4],[]]
// ...
//arr1[0][1] = 2
//arr2[0][1] = 4
//answer[0][1] = 6
//현재 answer 배열[[4,6],[]]
//length만큼 돌았으니까 바깥 for문으로 간다.
//arr1[1][0] + arr2[1][0]으로 다시 시작
}
}
//answer에는 [[4,6],[7,9]]
return answer;
}
이중 for문을 다 이해한거라기보단... 노가다의 향기가.. 좀 나는 것 같지만..!ㅎ
아무튼 이해한걸로 치고! 혼자 힘들어 하고있었는데, 주애
님이 map으로 푸시고 이해한 걸 공유 해 주셨다.
function solution(arr1, arr2){
return arr1.map((a,i) => a.map((b,j) => b + arr2[i][j]));
}
나 혼자 봤으면 절대 이해 못했겠지만..! 설명을 들으니 이해가 잘 됐다.
그냥 기본 map함수가 아니라 map함수 속에 map함수라 이해하기 정말 어려웠는데, 완전 이해!! 다시보면서 계속 복습해야지!!
응애 오늘도 내이름이 :^) ♡ ,,