<로직 고민/>
- 또 간단한 방법만 떠오르는데...
- for문을 2개 돌려서 각 인덱스 자리값끼리 더해서 answer에 넣어주는 ㄱ...ㅓ..
def solution(arr1, arr2):
answer = [[]]
for i in range(len(arr1)):
for j in range(len(arr1[0])):
answer[i][j] = arr1[i][j] + arr2[i][j]
return answer
- 근데 안 된다..
IndexError: list assignment index out of range
- 이런 에러가 뜬다
- 왜 안 되는지는 모르겠지만..전에도 행렬 문제 풀 때 저렇게 빈 리스트로 선언하는 게 아니라 인풋 행렬 모양에 맞게 0으로 초기화했던 것 같다
- 이젠 이러면 안 되지만..그래도 아직 공부하는 단계니까..ㅎㅎ 2차원 배열 0으로 초기화하는 방법을 찾아서 적용해봤다
- 풀린다..!
- 근데 1점..ㅎ
- 테스트 하나 실행시간이 36.4ms가 나왔다
- 더 빠르게 하는 방법이 있나보지? 흥..
<완성된 코드/>
def solution(arr1, arr2):
answer = [[0] * len(arr1[0]) for _ in range(len(arr1))]
for i in range(len(arr1)):
for j in range(len(arr1[0])):
answer[i][j] = arr1[i][j] + arr2[i][j]
return answer
<다른 사람 풀이/>
- 천재풀이1
def solution(arr1, arr2):
answer = [[c + d for c, d in zip(a,b)] for a, b in zip(arr1,arr2)]
return answer
- 오우...행렬 문제에서 zip() 함수를 썼던 것도 기억해냈음 좋았을 텐데...
- 근데 활용을 못 했을 듯 ㅋㅋㅋ
def solution(arr1, arr2):
for a, b in zip(arr1, arr2):
for c, d in zip(a, b):
print(a, b, c, d)
# [1, 2] [3, 4] 1 3
# [1, 2] [3, 4] 2 4
# [2, 3] [5, 6] 2 5
# [2, 3] [5, 6] 3 6
- 풀어서 쓰면 이렇게 되는데 answer에는 어떻게 식을 넣어야 하는지 모르겠다
- 똑같이 0으로 초기화 하고 값을 넣어줘야 하나..?
- 그렇게 하면 인덱스를 어떻게 맞춰야 하는지 ...또 모르겠다 ㅋㅋㅋ
- 여튼 zip()함수를 쓰면 저렇게 된다..!
- 다음에 꼭 활용해 보도록 하자..!!!