문제풀이
1
2
3
4
5
6
7
8
9
10
11
12
|
function solution(A,B){
var result = 0;
A.sort((a,b) => a-b)
// console.log(A)
B.sort((a,b) => b-a)
// console.log(B)
for(let x=0; x<A.length; x++) {
result += A[x]*B[x]
}
return result;
}
|
cs |
문제를 보고 각자의 A,B를 오름차순, 내림차순으로 정렬을 한 후 for문을 돌려 서로 곱한 값을 result에 더해 주는 식으로 로직을 생각했는데 그대로 잘 구현이 된 것 같다. 문제를 풀고나니 예외 경우가 있을지도 모른다는 생각이 들긴 한다. 생각 그대로 바로 풀려서 그런가?...
그리고 시간 복잡도 면에 관련해서는 sort를 두 번이나 사용해서 효율성 측면에서 통과를 못할 수도 있다고 생각했는데 통과하니 다행이었다. 퀵정렬시 시간복잡도는 O(nlogn) ~ O(n^2)...
지금 다시 보니 for문을 쓰지 않고 reduce를 사용할 수 있었던 것 같다.
1
2
3
|
result = A.reduce((acc,cur,idx)=>{
return acc += cur*B[idx]
},0)
|
cs |
'프로그래머스' 카테고리의 다른 글
5/28[문제풀이] 프로그래머스 Lv2 타켓 넘버 (0) | 2021.05.28 |
---|---|
5/27[문제풀이] 프로그래머스 Lv2 가장 큰 수 (0) | 2021.05.27 |
5/25[문제풀이] 프로그래머스 Lv2 피보나치 수 (0) | 2021.05.25 |
5/24[문제풀이] 프로그래머스 Lv2 2개 이하로 다른 비트 (0) | 2021.05.24 |
5/20[문제풀이] 프로그래머스 Lv2 수식 최대화 (0) | 2021.05.21 |