본문 바로가기

Python/기초 실습

반복문 | 알고리즘 코드 카타 37번 - 행렬의 덧셈(들여쓰기)

 

문제 설명

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

 

제한 조건

  • 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.

입출력 예

arr1 arr2 return
[[1,2],[2,3]] [[3,4],[5,6]] [[4,6],[7,9]]
[[1],[2]] [[3],[4]] [[4], [6]]

 

▶️ 내 코드(정답)

def solution(arr1 = [[1,2],[2,3]], arr2 =[[3,4],[5,6]]):
    answer = []
    for i in range(len(arr1)):
        list1 = []
        for j in range(len(arr1[0])):
            list1.append(arr1[i][j] + arr2[i][j])
            print(list1)
        answer.append(list1)
    return answer

 

❗️어려웠던 점

반복문에 대한 이해 부족으로 자꾸 오류가 발생.

 

▶️ 오류 코드

def solution(arr1 = [[1,2],[2,3]], arr2 =[[3,4],[5,6]]):
    answer = []
    for i in range(len(arr1)):
        list1 = []
        for j in range(len(arr1[0])):
            list1.append(arr1[i][j] + arr2[i][j])
            print(list1)
            answer.append(list1)
    return answer

 

❓테스트 결과

return 전 ‘answer.append(list1)’의 위치 때문에 값이 반복되어 출력됨.

list1의 프린트 값인 [4], [4, 6] , [7], [7, 9]을 비어 있는 리스트 answer에 담았으므로

[[4], [4, 6] , [7], [7, 9]] 같은 출력을 예상.

→ [[4, 6], [4, 6], [7, 9], [7, 9]]가 출력됨.

 

왜???????????

 

👁️👁️참고할만한 코드

#1. zip 활용 + 한 줄 작성

def sumMatrix(A,B):
    answer = [[c + d for c, d in zip(a,b)] for a, b in zip(A,B)]
    return answer

 

 

행렬/들여쓰기 보충 학습 - 위키독스

194번 -  반복문 들여쓰기([[]] 생성) 

data = [
    [ 2000,  3050,  2050,  1980],
    [ 7500,  2050,  2050,  1980],
    [15450, 15050, 15550, 14900]
    ]

result = []
for line in data:
    sub = []
    for column in line:
        sub.append(column * 1.00014)
    result.append(sub)
print(result)
#결과값
[
 [2000.28, 3050.427, 2050.2870000000003, 1980.2772],
 [7501.05, 2050.2870000000003, 2050.2870000000003, 1980.2772],
 [15452.163, 15052.107, 15552.177, 14902.086000000001]
]

 

 

195번 -  반복문 들여쓰기 (행렬 슬라이싱)

ohlc = [["open", "high", "low", "close"],
        [100, 110, 70, 100],
        [200, 210, 180, 190],
        [300, 310, 300, 310]]

#출력할 값
100
190
310

 

정답 코드

for line in ohlc[1:]:
    print(line[-1])