๋งํฌ
https://school.programmers.co.kr/learn/courses/30/lessons/12949go
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๋ฌธ์ ์์ฝ
2์ฐจ์ ํ๋ ฌ arr1๊ณผ arr2๋ฅผ ๊ณฑํ ๊ฒฐ๊ณผ ๋ฐํํ๊ธฐ
์ ํ
- ํ๋ ฌ arr1, arr2์ ํ๊ณผ ์ด์ ๊ธธ์ด๋ 2 ์ด์ 100 ์ดํ์ ๋๋ค.
- ํ๋ ฌ arr1, arr2์ ์์๋ -10 ์ด์ 20 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ๊ณฑํ ์ ์๋ ๋ฐฐ์ด๋ง ์ฃผ์ด์ง๋๋ค.
ํ์ด
ํ๋ ฌ์ ๊ณฑ์ ์ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- arr1์ ์ฒซ ๋ฒ์งธ ํ๊ณผ arr2์ ์ฒซ ๋ฒ์งธ ์ด์ ์์๋ค์ ๊ฐ๊ฐ ๊ณฑํ ํ, ๊ทธ ํฉ์ ๊ตฌํฉ๋๋ค. → ๊ฒฐ๊ณผ ํ๋ ฌ์ 1ํ 1์ด ๊ฐ์ด ๋ฉ๋๋ค.
- arr1์ ์ฒซ ๋ฒ์งธ ํ๊ณผ arr2์ ๋ ๋ฒ์งธ ์ด์ ์์๋ค์ ๊ฐ๊ฐ ๊ณฑํ ํ, ๊ทธ ํฉ์ ๊ตฌํฉ๋๋ค. → ๊ฒฐ๊ณผ ํ๋ ฌ์ 1ํ 2์ด ๊ฐ์ด ๋ฉ๋๋ค.
- ๋์ผํ ๋ฐฉ์์ผ๋ก ๋ชจ๋ ํ๊ณผ ์ด์ ๋ํด ๊ณ์ฐ์ ๋ฐ๋ณตํฉ๋๋ค.
arr1์ด (N*L) ํฌ๊ธฐ์ด๊ณ arr2๊ฐ (L*M) ํฌ๊ธฐ๋ผ๋ฉด, ๊ฒฐ๊ณผ ํ๋ ฌ์ (N*M) ํฌ๊ธฐ๊ฐ ๋ฉ๋๋ค.
๊ฒฐ๊ณผ ํ๋ ฌ์ ๊ฐ ์์๋ฅผ ๊ณ์ฐํ๋ ค๋ฉด L๋ฒ ๊ณฑ์ ํ ํ ๋ง์ง๋ง์ ์ด ๊ฒฐ๊ณผ๋ค์ ํฉํด์ผ ํฉ๋๋ค.
๋ฐ๋ผ์ ํ๋ ฌ ๊ณฑ์ ์ด ์ฐ์ฐ ํ์๋ O(N*M*L)์ ๋๋ค.
์ฃผ์ด์ง ์ ํ ์กฐ๊ฑด์ ๋ณด๋ฉด N, M, L์ ๊ฐ์ ๋ชจ๋ ์ต๋ 100์ด๋ฏ๋ก, ์ต๋ 10^6๋ฒ์ ์ฐ์ฐ์ ๋๋ค.
์ฝ๋
import java.util.*;
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int N=arr1.length;
int L=arr1[0].length;
int M=arr2[0].length;
int[][] answer = new int[N][M];
for(int i=0; i<N; i++){
for(int j=0; j<M; j++){
for(int k=0; k<L; k++){
answer[i][j] += arr1[i][k] * arr2[k][j];
}
}
}
return answer;
}
}
[์๊ฐ ๋ณต์ก๋]
- arr1: N*L ํฌ๊ธฐ์ ํ๋ ฌ
- arr2: L*M ํฌ๊ธฐ์ ํ๋ ฌ
- N,L,M์ ๋ฒ์๋ ๋ชจ๋ ๋์ผํ๋ฏ๋ก ์ต์ข ์๊ฐ ๋ณต์ก๋๋ 3์ค for๋ฌธ์ผ๋ก ์ธํด O(N^3)
'๐ช Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค] ๋ฐฉ๋ฌธ ๊ธธ์ด (JAVA) (2) | 2025.02.03 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค] ์คํจ์จ (JAVA) (1) | 2025.02.02 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ๋ชจ์๊ณ ์ฌ (JAVA) (1) | 2025.01.30 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ๋ ๊ฐ ๋ฝ์์ ๋ํ๊ธฐ (JAVA) (0) | 2025.01.30 |