프로그래머스-시소 짝꿍

S_H_H·2023년 6월 12일
0

프로그래머스

목록 보기
6/15

프로그래머스 로고

프로그래머스 - 시소 짝꿍


문제 설명

문제 풀이

풀이 설명

거리에 대한 지점이 2m, 3m, 4m이며, 인원은 A, B명
총 6개의 케이스에 대해 중복이 발생하는지 확인하면 된다고 생각

풀이 속도에 대한 고려때문에
몸무게 기준으로 정렬 후, 같은 몸무게인 경우 이전 결과를 합하는 로직 추가

코드 작성

        public long solution(int[] weights) {
            long answer = 0;
            weights = Arrays.stream(weights).sorted().toArray();

            int beforeNumber = 0;
            int beforeUpdateCount = 0;
            for(int j = 0; j < weights.length; j++){
                if(beforeNumber == weights[j]){
                    beforeUpdateCount--;
                    answer += beforeUpdateCount;

                }else{
                    beforeNumber = weights[j];
                    beforeUpdateCount = 0;

                    for(int i = j+1; i < weights.length; i++){
                        Map<Integer, Integer> b_map = new HashMap<>();
                        b_map.put(weights[j] * 2, weights[j] * 2);
                        b_map.put(weights[j] * 3, weights[j] * 3);
                        b_map.put(weights[j] * 4, weights[j] * 4);
                        b_map.put(weights[i] * 2, weights[i] * 2);
                        b_map.put(weights[i] * 3, weights[i] * 3);
                        b_map.put(weights[i] * 4, weights[i] * 4);

                        if(b_map.size() != 6){
                            answer++;
                            beforeUpdateCount++;
                        }
                    }
                }
            }

            System.out.println("answer = " + answer);
            return answer;
        }
profile
LEVEL UP

0개의 댓글