#
문제 설명
시소 짝꿍이 최대 몇 쌍 존재하는지 구하기
조건
매개 변수
weights
반환값
weights | result |
---|---|
[100,180,360,100,270] | 4 |
function solution(weights) {
const answer = [];
// 짝궁 최대 몇 쌍
for (let i = 0; i < weights.length; i++) {
const cur = weights[i];
for (let j = i+1; j < weights.length; j++) {
const last2 = cur * 2 % weights[j];
const last3 = cur * 3 % weights[j];
const last4 = cur * 4 % weights[j];
if (!last2 || !last3 || !last4) {
answer.push([weights[i], weights[j]]);
}
}
}
return answer.length;
}
function solution(weights) {
let pairsCount = 0;
const weightsCounter = {};
const weightRatios = [1, 3 / 2, 2, 4 / 3];
weights.sort((a, b) => b - a).forEach(weight => {
weightRatios.forEach(ratio => {
const scaledWeight = weight * ratio;
if (weightsCounter[scaledWeight]) {
pairsCount += weightsCounter[scaledWeight];
}
});
weightsCounter[weight] = (weightsCounter[weight] || 0) + 1;
});
return pairsCount;
}
풀이
가중치를 통해 solution 구하기
- 특정 비율 조건을 충족하는 가중치 쌍의 수를 계산
- 정렬은 모든 잠재적 쌍이 계산되도록 보장
- 가중치 배열을 사용하고 미리 정의된
4개의 비율에 대해 각 가중치를 확인
- 비율 중 하나를 곱한 가중치가
배열의 다른 가중치와 일치하면 이를 쌍으로 계산