[프로그래머스] Level1. 행렬의 덧셈

김택수·2022년 5월 21일
0
post-thumbnail

📄 문제 설명

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

❗ 해법찾기

  1. 아예 감이 오지를 않음.
  2. 감이 오지 않은 이유는 배열 안의 또 다른 배열의 인덱스를 찾는 방법을 몰랐기 때문
  3. 결국 검색해서 배열 안의 배열의 인덱스를 찾는 법을 찾아냄
  4. 이후는 몇 번 수정하면서 풀 수 있었음.

✏️ 풀이과정

배열 안의 배열의 인덱스를 찾는 방법
1. arr = [[1,2],[3,4]] 일 때
2. arr[0]은 [1,2]가 됨, [1,2]가 0번 [3,4]가 1번 인덱스
3. arr[0][0]은 1이 됨, arr[0]([1,2])의 0번이 1이기 때문
4. arr[0][1]은 2가 됨, arr[0]([1,2])의 1번이 2이기 때문

  1. arr = [[25,27,33],[55,56,14], [1,3,7] 일 때
  2. arr[2]은 [1,3,7]이 됨
  3. arr[1][2]은 14가 됨, arr의 1번 인덱스의 2번째 요소를 말한다.

  1. 첫번째 for문으로 arr1의 length만큼 반복한다. (2번)
  2. 두번째 for문으로 arr1[i]의 length만큼 반복한다. (2번)
  3. 첫번째 반복에서는 i=0로 초기화 한 상태에서, 두번째 for문으로 들어간다.
  4. 두번째 for문에서도 j=0로 초기화 한 상태에서
    아래 로직을 실행하고, 빈 배열인 sum에 push한다. 이때 sum은 [[4]]가 된다.

    arr1[0][0]+arr2[0][0] 이 실행된다 (1,3이 더해진다.)

  5. 두번째 for문은 j가 arr1[0]의 길이만큼 반복이기 때문에 한 번 더 실행된다.
  6. 이 때 sum은 [[4,6]]이 된다. (2,4가 더해짐) => arr1[0][1] + arr2[0][1]
  7. 두번째 반복에서는 i가 1이 된 상태에서, 두번째 for문으로 들어간다.
  8. 두번째 for문에서도 j가 1이 된 상태에서
    아래 로직을 실행하고, sum에 push한다. 이 때 sum은 [[4,6], [8]]이 된다.

    arr1[1][0]+arr2[1][0] 이 실행된다 (3,5이 더해진다.)

  9. 두번째 for문이 한 번 더 반복되고 sum은 [[4,6],[8,10]]이 된다.

복잡한 구조이지만, for문 안에서 for문을 돌림으로써 두가지 조건을 반복시킬 수 있다. 예를 들면 첫번째 for문으로 1번 반복을 들어갔을 때, 그 다음 for문이 반복이 100번이라면 결국 100번의 반복을 도는 것이고, 첫번째 for문이 5번 반복하고 두번째 for문이 100번 반복하는 구조라면, 500번의 반복을 도는 것이라고 할 수 있다.

profile
개발자 키우기 Lv1

0개의 댓글