[JAVA 문제 풀이] 365. 시소 짝꿍

프로그래머스 (152996)
Stupefyee's avatar
Jul 07, 2025
[JAVA 문제 풀이] 365. 시소 짝꿍
notion image
 

내가 작성한 코드

import java.util.Arrays; class Solution { public long solution(int[] weights) { long answer = 0; // 카운트 Arrays.sort(weights); // 오름차순 정렬 for (int i = 0; i < weights.length - 1; i++) { for (int j = i + 1; j < weights.length; j++) { // 현재 무게와 다음 무게 거리별 계산후 같으면 카운트 증가 if (weights[i] * 2 < weights[j]) break; if (weights[i] == weights[j]) { answer++; continue; } if (weights[i] * 3 == weights[j] * 2) { answer++; continue; } if (weights[i] * 4 == weights[j] * 2) { answer++; continue; } if (weights[i] * 4 == weights[j] * 3) { answer++; continue; } } } return answer; } }
 

다른 사람의 코드

import java.util.*; class Solution { public long solution(int[] weights) { long answer = 0; Map<Double, Integer> map = new HashMap<>(); // 무게, 등장 횟수 Arrays.sort(weights); // 무게를 오름차순으로 정렬 >> 다음 무게는 현재무게보다 크거나 같음 for (int weight : weights) { // 1, 2/3, 2/4, 3/4 >> 각 무게별 비율에 해당하는 무게를 계산 double originW = weight * 1.0; double tempW1 = (weight * 2.0) / 3.0; double tempW2 = (weight * 1.0) / 2.0; double tempW3 = (weight * 3.0) / 4.0; // 해당 무게가 등장한 횟수를 더함 if (map.containsKey(originW)) answer += map.get(originW); if (map.containsKey(tempW1)) answer += map.get(tempW1); if (map.containsKey(tempW2)) answer += map.get(tempW2); if (map.containsKey(tempW3)) answer += map.get(tempW3); map.put((originW), map.getOrDefault((originW), 0) + 1); // 현재 무게를 맵에 추가 } return answer; } }
 
 
Share article

stupefyee