728x90
내가 가진 무게로, 시소를 탈 수 있는 범위가 있는지 없는지 알아내야 하는게 문제인데, includes와 같은 탐색 함수는 시간복잡도가 O(n) 이므로 시간을 많이 잡아먹게 된다. Map 자료형을 활용해서 이를 O(1)만에 찾을 수 있도록 구현하여 해결하였다.
나와 같은 몸무게인 경우에는, Map자료형의 내 몸무게 개수에서 1을 뺀 값을 더해주고, 아닌 경우에는 Map자료형만큼 가져와주었다.
function solution(weights) {
let ret = 0
const map = new Map()
for (const weight of weights){
if (map.get(weight)) map.set(weight,map.get(weight)+1)
else map.set(weight,1)
}
const ary = [2/3,2/4,3/2,3/4,4/2,4/3,1]
for (let i = 0 ; i<weights.length ; i++) {
const a = weights[i]
for (const b of ary){
const num = map.get(a*b)
if (num){
if (a*b===a && num>1) ret += num-1
else if (a*b!==a)ret += num
}
}
}
return ret/2
}
728x90
'FrontEnd > 프로그래머스' 카테고리의 다른 글
[JS] 이모티콘 할인 행사 (0) | 2023.05.27 |
---|---|
[JS] 택배 배달과 수거하기 (0) | 2023.05.26 |
[JS] 숫자 변환하기 (0) | 2023.05.24 |
[JS] 뒤에 있는 큰 수 찾기 (0) | 2023.05.23 |
[JS] 무인도 여행 (0) | 2023.05.23 |