코딩테스트/프로그래머스

[프로그래머스] [Level 1] 행렬의 덧셈

박소민 2022. 2. 5. 15:50
문제) 행렬의 덧셈
 

코딩테스트 연습 - 행렬의 덧셈

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

programmers.co.kr

 

  • 내 풀이
def solution(arr1,arr2):
    answer=[]
    for i in range(len(arr1)):
        ans=[arr1[i][j]+arr2[i][j] for j in range(len(arr1[0]))] 
        answer.append(ans)
    return answer

- 생각보다 오래걸림...

- 주의해야할 점

  ans=[arr1[i][j]+arr2[i][j] for j in range(len(arr1[0]))] 

     : 첫 번째 for문이 도는 동안 나오는 모든 값을 하나의 리스트에 함께 넣음

#주의 사항
for i in range(len(arr1)):
	for j in range(len(arr1[0])):
		ans=[arr1[i][j]+arr2[i][j]]
        
#for문 두줄 쓰는 것과 위 코드는 다르다
#결과가 모두 따로따로 리스트로 만들어짐

- 결과

print(solution([[1,2],[3,4]],[[3,4],[5,6]]))

#결과
[[4,6],[8,10]]

 

 

  • 다른 사람 풀이 1
def solution(arr1,arr2):
  answer=[[arr1[i][j]+ arr2[i][j] for j in range(len(arr1[0]))] for i in range(len(arr1))]
  return answer

print(solution([[1,2],[3,4]],[[3,4],[5,6]]))

- 내 코드와 유사

- 밖으로 따로 썼던 for문까지 한줄에 합치는 코드

- 하나의 리스트에 for문 하나씩

 

  • 다른 사람 풀이 2
def solution(arr1,arr2):
  answer=[[c+d for c,d in zip(a,b)] for a,b in zip(arr1,arr2)]
  return answer

print(solution([[1,2],[3,4]],[[3,4],[5,6]]))

- zip() 함수 사용

 


zip()함수 개념
 

[Python] 내장 함수 zip()

zip() 함수 : 두 그룹의 데이터를 엮어주는 파이썬 내장 함수 zip(A,B,C) 여러 개의 순회 가능한(iterable) 객체를 인자로 받음 각 객체가 담고 있는 데이터를 하나씩 차례로 짝지어 튜플의 형태로 반

yygs321.tistory.com