본 게시글은 http://tryhelloworld.co.kr/ 에 있는 문제를 참고하여 풀이한 것입니다.
문제
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬을 입력받는 sumMatrix 함수를 완성하여 행렬 덧셈의 결과를 반환해 주세요.
예를 들어 2x2 행렬인 A = ((1, 2), (2, 3)), B = ((3, 4), (5, 6)) 가 주어지면, 같은 2x2 행렬인 ((4, 6), (7, 9))를 반환하면 됩니다.(어떠한 행렬에도 대응하는 함수를 완성해주세요.)
1 2 3 4 5 6 7 | def sumMatrix(A,B): answer = [] return answer # 아래는 테스트로 출력해 보기 위한 코드입니다. print(sumMatrix([[1,2], [2,3]], [[3,4],[5,6]])) | cs |
풀이
1 2 3 4 5 6 7 8 9 10 11 | def sumMatrix(A,B): answer = [] for i in range(len(A)): #리스트A,B 구별 tmp=[] #A출력하고 B 출력하기 위한 구분 for j in range(len(A[i])): #A와B에 서로 같은 위치의 값 더하기 tmp.append(A[i][j]+B[i][j]) #Ex) 1+3,2+4 answer.append(tmp) #첫번째 계산이 끝나면 append return answer # 아래는 테스트로 출력해 보기 위한 코드입니다. print(sumMatrix([[1,2], [2,3]], [[3,4],[5,6]])) | cs |
왜 for문이 두번 들어갈까?
for문이 2번이 나온 이유는 해당 행렬을 2번 나눌 수 있기 때문입니다.
1. 크게 A, B로 나눴을때
[[1,2], [2,3]], [[3,4],[5,6]]
A A B B
2. A안에 있는 좌표, B안에 있는 좌표를 i,j로 나눈다
[[1,2], [2,3]], [[3,4],[5,6]]
A A B B
A[i] A[j] A[i] A[j] B[i] B[j] B[i] B[j]
3. 이것을 코드에 맞게 계산해본다면(같은색끼리 덧셈)
[[1,2], [2,3]], [[3,4],[5,6]]
A A B B
A[i] A[j] A[i] A[j] B[i] B[j] B[i] B[j]
즉 A[i][j]+B[i][j]를 하면 우리가 원하는 행렬덧셈이 나오게 되는것이죠
이렇게 행렬덧셈을 2번 해줍니다
그러면 [4,6]이 나오고 다음 리스트에 덧셈을 넣어주기 위해
tmp=[]이 처음에 나오게 되는것이죠
실행
만약 tmp=[]이 처음에 초기화 한다면?
'파이썬 프로그래밍 > 파이썬 심화' 카테고리의 다른 글
[Python] 파이썬 예제. 같은 숫자는 싫어. 중복된 숫자 삭제하 (0) | 2017.04.11 |
---|---|
[Python] Set. 예제를 통한 집합 기초 개념잡기 (0) | 2017.04.11 |
[Python] 파이썬 예제. 가운데 글자 가져오기 (0) | 2017.04.07 |
[Python] 파이썬 예제. 피보나치 수 풀이 (0) | 2017.03.29 |
[Python] 파이썬 예제. 딕셔너리 정렬 (0) | 2017.03.27 |