세조목

PYTHON 정리(프로그래머스 - '행렬의 덧셈')(24.01.21) 본문

데이터 분석 공부/Python

PYTHON 정리(프로그래머스 - '행렬의 덧셈')(24.01.21)

세조목 2024. 1. 21. 17:50

금일은 프로그래머스 PYTHON 예제 中 '행렬의 덧셈' 을 풀어보았다.

1시간 정도 고민했으나 답이 나오지 않아서 풀이를 참고했는데

자료형에 대한 이해가 부족했던 것 같다.

 

https://school.programmers.co.kr/learn/courses/30/lessons/12950

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제에서는 2개의 행렬 arr1과 arr2의 같은 행, 열의 값을 서로 더한 값을 반환하라고한다.

2개의 행렬 arr1과 arr2는 행과 열의 크기가 같으며

행과 열의 길이는 500을 넘지 않는다고한다.

 

풀이를 보면서 한번 정리해보겠다.

def solution(arr1, arr2):
    answer = []
    for i in range(len(arr1)):
        answer.append([])
        for j in range(len(arr1[0])):
            answer[i].insert(j,arr1[i][j]+arr2[i][j])
    return answer

코드는 간단하다.

for 반복문을 활용하는데

리스트 안에 리스트가 들어있기때문에 for문을 총 두 번 활용한다.

첫번째 for문은 바깥쪽 리스트의 순서를

두번째 for문은 안쪽 리스트의 순서를

나타낸다.

 

여기서 유의해야할 점은 첫번째 for문을 돌릴때 대괄호 '[ ]'를 answer리스트에 매번 넣어줘야한다는 점이다.

그래야지 arr1과 arr2 리스트 안에 있는 리스트의 개수만큼 answer 리스트에 리스트를 넣어줄 수 있기때문이다.

 

두번째 for문에서는 각각의 행렬 속 같은 행, 열의 값을 서로 더한 값을 answer리스트에 넣어준다.

이 때 append가 아닌 insert를 사용하는 이유는 값을 넣어주는 위치를 정확히 지정해주기 위함이다.

append메서드와 insert 메서드의 차이점은 아래 포스팅을 참고하면 된다.

2024.01.21 - [데이터 분석 공부/Python] - PYTHON 정리(append, insert 차이)(24.01.21)

또 한가지 유의해야할 점이 있는데

그냥 answer.insert( )를 입력하는 것이 아니라

answer[i].insert( )를 입력해야한다는 점이다.

만약 answer.insert( )를 입력하면

answer 리스트 안에 요소가 들어가는 것이지

answer 리스트 안 리스트에 요소가 들어가지 않게된다.

아래 예시를 보면 한번에 이해가 될 것이다.

answer = [[]]
answer.insert(0,3)
>>> answer = [3, []]

answer[0].insert(0,3)
>>> answer = [[3]]

예제에서의 경우 answer 리스트 속

i번째 리스트 안 j번째 자리에 arr1[i][j] + arr2[i][j]를 넣어야하므로

answer[i].insert(j, arr1[i][j] + arr2[i][j])를 입력해준다.