Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

csct3434

[level 2] 시소 짝꿍 - 152996 본문

프로그래머스

[level 2] 시소 짝꿍 - 152996

csct3434 2024. 3. 7. 10:05

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;

class Solution {

    public long solution(int[] weights) {
        long answer = 0;
        HashMap<Integer, Integer> countPerWeight = new HashMap<>();
        HashMap<Integer, List<Integer>> torqueMap = new HashMap<>();

        for (int k : weights) {
            countPerWeight.put(k, countPerWeight.getOrDefault(k, 0) + 1);
        }
        answer += countPerWeight.values().stream().mapToLong(x -> (long) x * (x - 1) / 2).sum();

        for (int weight : countPerWeight.keySet()) {
            for (int distance = 2; distance <= 4; distance++) {
                int torque = weight * distance;
                if (!torqueMap.containsKey(torque)) {
                    torqueMap.put(torque, new LinkedList<>());
                }
                torqueMap.get(torque).add(weight);
            }
        }

        for (int torque : torqueMap.keySet()) {
            List<Integer> weight = torqueMap.get(torque);
            for (int i = 0; i < weight.size(); i++) {
                for (int j = i + 1; j < weight.size(); j++) {
                    answer += (long) countPerWeight.get(weight.get(i)) * countPerWeight.get(weight.get(j));
                }
            }
        }

        return answer;
    }
}