문제
항해99 본과정 2주차 알고리즘 페어프로그래밍을 진행하던 중
프로그래머스 행렬의 덧셈에서 난관에 봉착 (무려 연습문제였음)
중첩 for문을 사용해 2차 배열인 배열1과 배열2의 같은 인덱스의 요소끼리 더해서
새로운 배열을 생성해주려고 시도했지만 자꾸 null 요소를 가진 1차 배열만 생성됨
시도
function solution(arr1, arr2) {
let arr = [];
for (let i = 0; i < arr1.length; i++) {
let subArr = [];
arr.push(subArr[i])
for (let k = 0; k < arr1.length; k++) {
subArr.push(arr1[i][k] + arr2[i][k])
}
}
return arr
}
최종적으로 새로운 배열을 리턴해야하니 빈 배열을 하나 선언해주고 중첩 for문을 사용.
바깥쪽 for문이 한번 반복되는 동안 안쪽 for문이 arr1의 인덱스만큼 반복하면서 arr1과 arr2의 같은 인덱스를 가진 요소끼리 더해서 subArr를 생성해주면 최종적으로 바깥 for문이 arr에 요소를 넣어줌으로 설계했지만 보기좋게 실패.
해결
function solution(arr1, arr2) {
let arr = []
for (let i = 0; i < arr1.length; i++) {
let sum = []
for (let k = 0; k < arr1[i].length; k++) {
sum.push(arr1[i][k] + arr2[i][k])
}
arr.push(sum)
}
return arr
}
나의 코드에 문제점이 2가지가 있었다.
첫번째는 subArr 배열의 요소를 하나씩 넣어 줄 것이 아니라 subArr 자체가 하나의 배열이므로 통째로 넣어줘야 했다.
두번째는 중첩 for문의 안쪽 반복에서 반복 횟수를 arr1.length가 아니라 arr.1[i].length를 해줘야 arr1[i][k]의 값이 없을 때 null 값이 들어가지 않는다.
알게된 것
선언과 할당에 대해 조금 더 주의 깊게 생각할 것
다중 배열을 다룰 때 행렬의 개념과 요소의 접근, 추가 및 삭제 방법에 대해 깨닳았다.
항해99 D-95
'Development > TIL' 카테고리의 다른 글
소수 구하기 (feat.에라토스테네스의 체) (0) | 2023.04.12 |
---|---|
문자열과 영단어 (0) | 2023.04.11 |
N진법 변환 (0) | 2023.04.10 |
match 메소드 (0) | 2023.04.08 |
올바른 TIL 작성에 대해 (1) | 2023.04.07 |