728x90

해당 문제는 행렬의 곱셈을 반환하는 문제이다.
행렬A(a*b) 행렬B(c*d) 두 행렬을 곱하면
a*d 크기의 행렬이 완성된다. (a:행 b:열 c:행 d:열)
이때 b열과 c행의 크기가 같아야하며,
다르면 계산할수 없다.
문제에서는 arr1행렬과 arr2행렬이 주어진다.
나는 먼저 arr1행렬의 행과열을 구하면 arr2의 행과 열은
일단, arr2의 행은 arr1행렬의 열과 크기가 같다.
그래서 간단히 arr1의 행과 열 그리고 arr2의 열을 변수에 담기로 결정했다.

그리고 arr1의 열과 arr2의 행의 크기가 같지 않다면 예외처리를 했다.

마지막으로 새로운 행렬을 담기위한 배열을 초기화해줬다.

그 후 for문을 이용해서 result 배열을 채워줬다.

| 1. 의도 및 이유: 행렬 곱셈은 각 원소를 적절히 조합하여 새로운 행렬을 생성하는 기본적인 선형대수 연산이다. 코드에서 예외처리를하여 입력 행렬이 행렬 곱셈이 가능한지 여부를 확인하고, 가능하지 않으면 예외를 발생시켰다. 2. 코드 동작 로직: arr1의 행과 열을 변수 rowsA와 colsA에 각각담고 arr2의 행과 열은 행의경우 arr1의 열과 같아야지만 연산이 되기에 따로만들지 않고, colsB라는 변수에 담아 주었다. 예외처리를 통해 두번째 행렬arr2의 행 수와 arr1의 열 수가 일치하지 않을때 IllegalArgumentException을 발생시켰다. 마지막으로 중첩루프를통해 각 결과 행렬의 원소를 계산하고, 최종적으로 새로운 행렬을 반환한다. 3. 버그 또는 에러 및 해결: 예외처리를 통해 잘못된 크기의 행렬이 들어오면 IllegalArgumentException을 발생시킨다. 결과적으로 행렬 곱셈이 가능한 경우에만 실행되도록 설계되었고, 행렬의 크기가 일치하지 않으면 오류가 감지된다. |
728x90
'TIL > kotlin 알고리즘' 카테고리의 다른 글
| kotlin 프로그래머스 lv2 기능개발 (0) | 2024.03.13 |
|---|---|
| kotlin 프로그래머스 lv2 할인 행사 (0) | 2024.03.12 |
| kotlin 프로그래머스 lv2 n^2 배열 자르기 (0) | 2024.03.11 |
| kotlin 프로그래머스 lv2 H-Index (0) | 2024.03.07 |
| kotlin 프로그래머스 lv2 연속 부분 수열 합의 개수 (0) | 2024.03.07 |