0502-DailyAlgorithm

프로그래머스 2문제

1. 행렬의 곱셈

1
2
3
4
5
6
7
8
9
10
11
function productMatrix(A, B) { 
const productMatirx = [...new Array(A.length)].map(v=>[...new Array(B[0].length)]);
const product = productMatirx.map((rv,ri)=>rv.map((cv,cvi)=>{
return A[ri].reduce((ac,c,ci)=>{
return ac+=c*B[ci][cvi]
},0)
}))
return product;
}
// 지나고 보니 네이밍... productMatrix -> product 변수 네이밍이 ... 별로다
// 맨 처음에 productMatirxInit 결과 productMatirxResult 이런식으로 하던지 바로 return을 해주던지...

잘했다고 생각한 점 rv, cv -> row colum 으로 의미 부여한 점

배운점

배열의 index로 차수를 맞춰줘야 한다. // 혹은 for문 안에서 차수 한 칸 아래서 배열을 만들어서 그 배열을 push해주는 방법
곱이 성립 안 되는 경우 Error처리를 안 했다.
// if (A[0].length !== B.length)

2. 2016

나의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

function getDayName(a,b){
const Months = {
1: 31,
2: 29,
3: 31,
4: 30,
5: 31,
6: 30,
7: 31,
8: 31,
9: 30,
10: 31,
11: 30,
12: 31,
}
const Days = {
0:'SUN',
1:'MON',
2:'TUE',
3:'WED',
4:'THU',
5:'FRI',
6:'SAT',
}
const lastPoint = 4
let firstDays = 0;
for(let i =1; i<a; i++){
firstDays+=Months[i]
}
firstDays+=b
return Days[(firstDays%7+lastPoint)%7]
}
// 지금 보니 (firstDays%7+lastPoint)%7 왜 이렇게 해줬는지 ... 더하고 %7 한 번만 해주면 될 것을

다른 사람의 풀이
new Date같은 경우는 잘 쓰는 생성자이므로 인스턴스 메소드르르 잘 기억해뒀다가 활용하는 방향도 좋은 것 같다.

1
2
3
4
5
6
7
8
9
10
function getDayName(a,b){
var arr = ['SUN','MON','TUE','WED','THU','FRI','SAT'];
var date = new Date(`2016-${a}-${b}`);
var day = date.getDay() -> 숫자로 반환한다.
return arr[day];
}

function getDayName(a,b){
return new Date(2016, a-1, b).toString().slice(0,3).toUpperCase();
}

이제 level2 다 풀었으므로 프로그래머스 1 , codility 1 2문제씩으로 바꿔야겠다 !!!

Codility 07-02