0624 TIL 프로그래머스 코테연습
최소공배수와 최대공약수
function solution(a, b) {
let answer = [];
let r;
let lcm = a * b;
while( b != 0 ){
r = a % b;
a = b;
b = r;
}
answer.push(a, lcm/a);
return answer;
};
👉 풀이과정
- 최대공약수 구하는 법 = a를 b로 나눈 나머지가 r일때 a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 방법을 이용해 나머지가 0이 나올 때 까지 나누면 그 수가 최대공배수
- 최소공배수 구하는 법 = a와 b의 최소공배수는 a와 b의 곱을 a와 b의 최대공약수로 나눈값.
a를 b로 나눈 나머지가 r일때 =
r = a % b;
a와 b의 최대공약수는 b와 r =a = b; b = r;
a와 b의 곱을 a와 b의 최대공약수로 나눈값 =
(a * b) / a)
행렬의 덧셈
function solution(arr1, arr2) {
let answer = [];
for(let i=0; i < arr1.length; i++){
answer.push([]);
}
for(let i=0; i < arr1.length; i++){
for(let j=0; j < arr1[i].length; j++){
answer[i][j] = arr1[i][j] + arr2[i][j];
}
}
return answer;
}
👉 풀이 과정
- for문으로 각 행렬의 같은 위치?에 있는 수 끼리 덧셈.
맨 처음 코드는 for문에 let a = arr1[i][j];
, let b = arr2[i][j]
로 선언 후 answer.push([a+b])
를 해줬었다. 문제는 arr[i][j]
j 에 해당부분이 따로따로 나오는 결과가 나왔다. [[4],[6],[7],[9]]
이런식으로...
해당 방법이 잘못됐다는 걸 알고 answer[i][j] = arr1[i][j] + arr2[i][j]
로 변경했지만 answer array안에 공백이 있어서 에러가 남.
결과적으론 위의 방법처럼 arr1의 길이만큼 []
를 넣어줬다.
👉 다른 사람의 풀이
return arr1.map((a, i) => a.map((b, j) => b + arr2[i][j]));
map
메소드를 이용하면 엄청 간단하게 풀 수 있었다..
.map((currentValue, index)
메소드 두 번째 인자로 현재값의 index를 사용할 수 있다.
행렬의 곱셈
function solution(arr1, arr2){
let answer = [];
const row = arr1.length;
const col1 = arr1[0].length;
const col2 = arr2[0].length;
for(let i=0; i < row; i++){
answer.push([]) // answer안에 arr1의 갯수만큼 []를 넣어줌
for(let j=0; j < col2; j++){
answer.push(0) // answer[]내부에 arr2[0]안에 있는 갯수만큼 숫자를 넣어줌
}
}
for(let i=0; i < row; i++){
for(let j=0; j < col2; j++){
for(let k=0; k < col1; k++){
answer[i][j] += arr1[i][k] * arr2[k][j];
}
}
}
return answer;
}
👉 풀이과정
행렬의 곱셈 공식이 기억 안나서 해당 문제의 입출력 예가 왜 저런 값을 가지는지 조차 몰랐다.
https://matrixcalc.org/ko
위의 행렬계산기 사이트를 이용, 왜 저 값이 나왔는지 까지 이해함.
초반에 정확히 인지하지 못하고
anwer[i][j] += arr[i][j] * arr2[j][i]
이런식으로 푸니깐 빈 array들과 잘못된 값들이 출력됨. 노트에 곱셈 순서 값을 하나씩 적으니 많이 잘못됨을 알아냈따.
행렬의 곱셈 공식
C[i,j] = C[i,j] + A[i,k] * B[k,j];
위 공식대로 문제를 풀었다.
사실 머릿로 생각하면서 푼게 아닌 공식찾아 대입해서 푼 문제😥
Author And Source
이 문제에 관하여(0624 TIL 프로그래머스 코테연습), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@313yang/0624-TIL-프로그래머스-코테연습저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)