

여기서 return 하는것은 하나의 쌍이다.
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
}
나처럼 곱하기를 하는것이 아닌 나누기를 해서 배열에 존재하는 수인경우 count 를 하는 것을 보여준다.
이때 count+=1 를 하는게 아니라..
100:3 인경우
어쩌피 2개씩을 뽑아야되니까 나인경우를 빼면 2 개가 가능합니다. <- 이것을 알려주는 +=2 를 한다.
그다음 마지막에 이경우는 쌍^^ 이기때문에 /2 를 한 값을 return 하겠습니다.로 보여주면 된다.
복잡하게 짤려고 안하는데 늘 코드가 드러운거 같다.
여기서 map 을 어떤 경우에 쓸수 있는지 배우게 되었다.
많은 도움이 되었습니다, 감사합니다.