- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12949
Lv2 문제다!
문제 이해
정답 행렬의 (i,j) 원소는 arr1[i][열] 와 arr2[행][j]의 곱의 합이다
각 리스트를 곱하기도 해야하고, 그 값을 누적도 해야하기 때문에 3중 for문으로 진행한다
이중 for문에 for k 문 추가해서 하는 거 생각했는데, 안될 것 같아서 다른 방법으로 푸느라 삽질 엄청 했다ㅠ
이차 행렬은 이렇게 진행하는 걸로 기억해둬야겠다
- 정답 풀이:
def solution(arr1, arr2):
n = len(arr1)
m = len(arr2[0])
answer = [[0] * m for _ in range(n)]
for i in range(n):
for j in range(m):
for k in range(len(arr2)):
answer[i][j] += arr1[i][k] * arr2[k][j]
return answer
- 삽질한 풀이
이렇게 풀지 말자!!
def change(arr2, j, m):
temp = []
for i in range(m):
temp.append(arr2[i][j])
return temp
def matrix(arr1, arr2):
num = 0
for i in range(len(arr1)):
num += arr1[i] * arr2[i]
return num
def solution(arr1, arr2):
a, b = len(arr1), len(arr1[0])
c, d = len(arr2), len(arr2[0])
flag = True
if b == c:
n, m = a, d
elif d == a:
flag = False
n, m = c, b
answer = [[0] * m for _ in range(n)]
if flag:
for i in range(n):
for j in range(m):
temp = change(arr2, j, m)
answer[i][j] = matrix(arr1[i], temp)
else:
for i in range(n):
for j in range(m):
temp = change(arr1, j, m)
answer[i][j] = matrix(arr2[i], temp)
return answer
'코딩테스트 > 기출' 카테고리의 다른 글
[/ 프로그래머스] 17680번 : [1차] 캐시 (0) | 2022.09.12 |
---|---|
[월간 코드 챌린지 시즌2/ 프로그래머스] 76502번 : 괄호 회전하기 (0) | 2022.09.12 |
[Summer/Winter Coding(~2018) / 프로그래머스] 12980번 : 점프와 순간이동 (0) | 2022.09.11 |
[2017 팁스타운 / 프로그래머스] 12985번 : 예상 대전 (0) | 2022.09.11 |
[연습문제 / 프로그래머스] 12953번 : N개의 최소공배수 (0) | 2022.09.11 |