프로그래머스 레벨1) 행렬의 덧셈
2021. 12. 1. 12:10ㆍAlgorithm/알고리즘
728x90
반응형
문제
고민의흔적(제출x)
func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] {
var arrLeft = arr1[0][0] + arr2[0][0]//1+3=4
var arrRight = arr1[0][1] + arr2[0][1]//2+4=6
var arrLeft2 = arr1[1][0] + arr2[1][0]//2+5=7
var arrRight2 = arr1[1][1] + arr2[1][1]//3+6=9
var newArr = [[Int]]()
newArr[0][0] = arrLeft
newArr[0][1] = arrRight
newArr[1][0] = arrLeft2
newArr[1][1] = arrRight2
return newArr
}
solution([[2,3]], [[3,4]])
30분 고민하고 해설을 찾아봄. for in 문을 돌려야하나... 라고 생각함
음 역시 맞았음
😺찾아본 답안
func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] {
var array1 = [Int]()
var array2 = [[Int]]()
for i in 0..<arr1.count{//i는 0,1
for j in 0..<arr1[i].count{//j는 0
let sum = arr1[i][j] + arr2[i][j]// arr1[0][0] + arr2[0][0], arr1[1][0] + arr2[1][0]
array1.append(sum)//[6]
//print(array1)
}
array2.append(array1)//[[4],[6]]
array1.removeAll()// 왜 이 라인을 실행해줘야 답이되는지???에 대한 답이 해결됬징 for in문 많이써보고 이해해야됌
}
return array2
}
물론 for in 문이 필수는 아님
깔끔한 답안
import Foundation
func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] {
return zip(arr1, arr2).map{zip($0,$1).map{$0+$1}}
}
공부해볼것
🐷참고하면 유의미한 답안
func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] {
var arr : [[Int]] = Array(repeating : Array(repeating: 0, count : arr1[0].count), count: arr1.count)
for i in 0..<arr1.count {
for j in 0..<arr1[0].count {
arr[i][j] += (arr1[i][j]+arr2[i][j])
}
}
return arr
}
😺답안보다 🐷답안이 어떤부분에서 더 편리해보이는지 이런 부분 고민해보기
-> 파라미터를 내려받아서 바로 쓰는게 코드 가독성도 좋고 코드가 더 짧아진다
728x90
반응형
'Algorithm > 알고리즘' 카테고리의 다른 글
프로그래머스 1단계) 하샤드수 (0) | 2021.12.02 |
---|---|
프로그래머스 레벨1) 핸드폰 번호 가리기 (0) | 2021.12.01 |
프로그래머스 레벨1) x만큼 간격이 있는 n개의 숫자 (0) | 2021.11.30 |
프로그래머스 레벨1) 직사각형 별찍기 (0) | 2021.11.30 |
코테합격 치트키 (0) | 2021.10.14 |