프로그래머스/Lv.2
프로그래머스 JS 시소 짝꿍 (해시 맵)
sakuraop
2023. 12. 12. 22:03
시소 짝꿍 (30) 문제 보기
탑승한 사람의 무게와 시소 축과 좌석 간의 거리의 곱이 양쪽 다 같다면 시소 짝꿍이라고 할 수 있습니다.
사람들의 몸무게 목록 weights이 주어질 때, 시소 짝꿍이 몇 쌍 존재하는지 구하여 return 하도록 solution 함수를 완성해주세요.
문제 풀이
function solution(weights) {
weights.sort((a, b) => a - b);
const weightCounts = {};
const units = [1, 2 / 3, 2 / 4, 3 / 4];
let count = 0;
for (let weight of weights) {
for (let unit of units) {
if (weightCounts[weight * unit]) {
count += weightCounts[weight * unit];
}
}
weightCounts[weight] ? weightCounts[weight]++ : (weightCounts[weight] = 1);
}
return count;
}
solution([100, 180, 360, 100, 270]);
해시 맵을 이용한다.
weight에 ( *1, *2/3, *2/4, *3/4 ) 을 각각 곱해본 결과가 해시맵에 존재하는지 확인한다.
존재한다면 해당 인원 수 만큼 count에 더해준다.
확인을 끝낸 후
해당 weight가 해시맵에 존재한다면 인원을 +1 해주고,
그렇지 않다면 해시맵에 새롭게 추가한다.