항해99 12기 - 230128 TIL

지윤·2023년 1월 28일
0

항해99

목록 보기
15/40

오늘 한 일

오늘도 하루종일 코딩테스트! 어제보다 나을 줄 알았는데 훨~씬 어려웠다..ㅎㅎ..
그래도 어제 이중for문 이해 하고 자서..! 오늘 이중 for문으로 문제풀때 한 10%정도 더 이해가 빨랐던 것 같다! 그리고 그 문제를 주애님께서 map으로 풀어주셨는데.. 와! map 개쩐다..! 진짜 이중 for문보다 훨~씬 이해하기 쉬웠다. (물론 설명들어서 ㅎㅎㅎㅎㅎㅎ)
그리고 오늘 다른 팀원분들 블로그 가서 구경하는데.. 오! 다들 프론트 개발자 답게 깔끔하고 예쁘게 꾸며놓으셨다..! 난 조잡 그 자체..! ㅋㅋㅋㅋㅋㅋㅋㅋ
음.. 일단 양으로 승부하자..!
그리고 진환님 블로그 가서 얕은복사 vs 깊은 복사를 이해하고 왔다. 퍼가요~!
진짜 끝까지 아리까리했는데 잘 설명해놓으셔서 레퍼런스에 저장! ㅋㅋㅋㅋㅋㅋ
그리고 설희님이 질문 많이 해주셔서 나도 다시 복습하면서 알고리즘 공부 다시 할 수 있었다!! 국비때도 느낀거지만, 이해할때까지 질문하고 이해 될때까지 설명하는게 정말 좋은 공부법인 것 같다!! 물론 질문했을때 내가 바보 멍청이가 된 것 같은 느낌이지만 ㅠ.. 그걸 견뎌야 발전할 수 있는 것 같다..!! 나도 모르는 건 넘어가지 말고 꼭 질문 해야지! 지금은 바보 멍청이지만 내일은 좀 더 나은 바보 멍청이 일듯..!!!

오늘 배운 것

  • 행렬의 덧셈 문제를 풀면서 이중 for문을 복습 할 수 있었다.
//예제 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]));
}

나 혼자 봤으면 절대 이해 못했겠지만..! 설명을 들으니 이해가 잘 됐다.

  • a: arr1안의 배열 => [1,2],[2,3]
  • b: a안의 각 요소 1,2,3,4
  • 각 b에 arr2의 각 요소를 더해주면 됨
  • arr1과 arr2은 생긴게 같기 때문에 그냥 arr2[i][j]라고 써주면 된다.

그냥 기본 map함수가 아니라 map함수 속에 map함수라 이해하기 정말 어려웠는데, 완전 이해!! 다시보면서 계속 복습해야지!!

참고한 웹사이트

profile
방금 태어난 개발자

1개의 댓글

comment-user-thumbnail
2023년 1월 28일

응애 오늘도 내이름이 :^) ♡ ,,

답글 달기