MATLAB 회사인 mathworks에서 제공하고 있는 매트랩 코딩 커뮤니티로,
매트랩 관련 코딩테스트 문제들을 제공하고 있다.
매스웍스 회사뿐만 아니라 사용자가 코딩 테스트 문제를 내고 다른 사람이 풀도록 할 수도 있다.
매트랩 코드가 익숙하지 않은 사람들에게 추천하는 사이트다.
매스웍스 계정이 있어야 이용 가능하며, 대부분 문제들이 무료다.
(아직 모든 문제를 본 것이 아니어서 정확하지 않음)cody 사이트 : https://kr.mathworks.com/matlabcentral/cody/
Given two input matrices, x and y, check if their inner dimensions match.
If they match, create an output variable z which contains the product of x and y.
Otherwise, z should contain a custom string message
Example:x = [1 2;3 4] y = [5;6]
z = [17;39]
x = [1 2 3;4 5 6] y = [2 5;3 6]
z = "Have you checked the inner dimensions?"
OR
z = "The inner dimensions are 3 and 2. Matrix multiplication is not possible"
NOTE - An example of combining numbers and strings together is shown below:
x = "The sum of " + 4 + " and " + 3 + " equals " + 7 x = "The sum of 4 and 3 equals 7"
SOUTION
function z = in_prod(x,y) z = x; end
문제 링크
행렬 곱의 특성에 대해 이해하면 쉽게 풀 수 있는 문제이다.
앞 행렬의 column과 뒷 행렬의 row 수가 같아야 행렬의 곱셈을 수행할 수 있다는 특징을 이해하고, 이를 조건문으로 적용하면 쉽게 풀이가 가능하다.
function z = in_prod(x,y) if length(x(1,:)) == length(y(:,1)) z = x * y; else z = "Have you checked the inner dimensions?"; end end
1. 행렬곱의 특징을 조건문으로 구현했다.
행렬의 곱셈은 앞 행렬의 column, 뒷 행렬의 row 수가 같아야 수행되므로 이를 length 함수로 구현했다.
2. 지정한 조건이 아닐 때 에러 문구를 산출하도록 구현했다.
문제에서 예시로 들어준 문장인 "Have you checked the inner dimensions?" 을 output으로 넣어주었다.
문제를 보는 순간, 내적과 외적을 본지 오래되어서 내적 특징이 기억이 나지 않아서 약간 당황했다. 행렬곱 개념만으로 풀 수 있는 문제여서 다행이었다.
size 함수보다 length 함수를 더 많이 쓰는 습관때문에 length로 풀이했는데, preferred solution을 보니 size 함수를 이용한 답안이 더 많았다. length 함수는 메모리를 더 잡아먹어서 잘 안써야 하는데, 습관을 고치기 위해 노력해야겠다.