코딩 테스트/Python

[프로그래머스 코딩테스트 연습] 2. 행렬의 덧셈

알밤바 2022. 2. 8. 16:25
728x90
반응형

화, 목 일주일에 2회 진행하며, 하루에 2개의 연습 테스트를 진행한다. 2번째 코딩테스트는 '행렬의 덧셈'이다.

이것도 첫번째와 마찬가지로 numpy를 사용하지 않고 덧셈을 하는 것이다.

 

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

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

programmers.co.kr


[행렬의 덧셈]

1) 문제 설명

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

 

2) 제한 조건

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

 

3) 입출력 예


1. 문제 접근방식

이번 연습 코딩테스트는 '이중 for문', '인덱스'에 관련해서 알아야 풀 수 있는 문제인데, 아직 이 부분을 정확히 알지 못해서 사용하지 못하였다.

'이중 for문'에 대해 더 공부해야겠다!

 

2. 풀이코드

(1) 처음에 접근한 방식

배열의 합에 대한 구글링을 하였을 때, for문을 사용한 것을 보아서 리스트 컴프리헨션을 써서 코드를 짰지만, 각 값이 더해지는 것이 아니라 리스트가 합해졌다. 그리고는 해결방법을 찾지 못하였다.ㅠㅠ

def solution(arr1, arr2):
    answer = [arr1[i] + arr2[i] for i in range(len(arr1))]
    return answer

 

(2) 다른 팀원분 코드

def solution(arr1, arr2):
    answer = []         # arr1, arr2 덧셈 결과를 저장할 변수 지정
    for i in range(len(arr1)):          # arr1 열의 길이만큼 반복함
        answer.append([])               # 반복한 값을 answer에 넣어줌
        for j in range(len(arr1[i])):   # arr1 내에 있는 행렬의 길이만큼 반복
            answer[i].append(arr1[i][j] + arr2[i][j])   # arr1, arr2의 원소의 합을 구한 후 answer에 넣어줌
            
    return answer

코드가 이해되지 않아서 막막해했었는데, 다행히 이날 저녁에 게더에서 어떤 분께서 자세히 알려주셨다ㅠ_ㅠ

완벽하게 이해를 했습니다! 참고한 블로그는 ▼이 블로그로 이 포스팅에는 zip함수도 사용했는데 이것도 추가로 공부해야겠다.

 

Python _ 행렬의 덧셈

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

sonar89.tistory.com

 

3. 배운 점

사실 이 문제는 이중 for문도 중요하지만, 행렬의 기본 지식이 있어야 풀 수 있는 문제라는 것을 이해하고 깨달았다. 내가 이 문제의 풀이를 보면서 이해하지 못하였던 이유는 바로 행렬의 지식이 없었기 때문이다. 고등학교 이후로 수학을 하지 않아서 그런가 수학의 개념이 하나도 생각나지 않는다... 

'파이썬 수학'이라고 파이썬에서 사용되는 수학 개념들만을 엮어 만든 책을 보고 공부하면 좋다는데, 파이썬 공부하면서 같이 공부해봐야겠다 :) ((우선 SQLD 자격증 먼저 끝낸 후,,))

728x90
반응형