거리에 대한 지점이 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;
}