안녕하세요
프로그래머스 JS 시소 짝꿍 (해시 맵) 본문
시소 짝꿍 (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 해주고,
그렇지 않다면 해시맵에 새롭게 추가한다.
'프로그래머스 > Lv.2' 카테고리의 다른 글
프로그래머스 JS 테이블 해시 (bitwise XOR 연산) (0) | 2023.12.15 |
---|---|
프로그래머스 JS 숫자 카드 나누기 (나누어 떨어지는 수) (0) | 2023.12.14 |
프로그래머스 JS 마법의 엘리베이터 (덧셈 올림) (0) | 2023.12.11 |
프로그래머스 JS 호텔 대실 (겹치는 시간대) (0) | 2023.12.10 |
프로그래머스 JS 무인도 여행 (BFS, 이웃된 값 합산) (0) | 2023.12.09 |