프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
1.오름차순으로 정렬하여 비교 ( 코드를 간결하게 하기 위함. 오름차순으로 정렬하지 않으면 double 변수에 3/2 , 2 , 4/3 을 추가해야함)
for (int i : weights) {
double a = i * 1.0;
double b = i * 2.0 / 3.0;
double c = i * 1.0 / 2.0;
double d = i * 3.0 / 4.0;
if(map.containsKey(a)) answer += map.get(a);
if(map.containsKey(b)) answer += map.get(b);
if(map.containsKey(c)) answer += map.get(c);
if(map.containsKey(d)) answer += map.get(d);
map.put(i * 1.0, map.getOrDefault(i * 1.0, 0) + 1);
}
2. map을 활용하여 중복여부를 체크하며 문제 해결
3. 중복무게의 경우 추가로 계산할 필요 없음. 100무게가 3명일 경우 3 , 4명일 경우 6, 5명일 경우 10 이라는 원하는 결과가 나옴.
나의풀이 ( 코드 )
import java.util.*;
class Solution {
public long solution(int[] weights) {
long answer = 0;
Arrays.sort(weights);
Map<Double, Integer> map = new HashMap<>();
for (int i : weights) {
double a = i * 1.0;
double b = i * 2.0 / 3.0;
double c = i * 1.0 / 2.0;
double d = i * 3.0 / 4.0;
if(map.containsKey(a)) answer += map.get(a);
if(map.containsKey(b)) answer += map.get(b);
if(map.containsKey(c)) answer += map.get(c);
if(map.containsKey(d)) answer += map.get(d);
map.put(i * 1.0, map.getOrDefault(i * 1.0, 0) + 1);
}
return answer;
}
}'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스/JAVA 자바] [3차] 방금그곡 (0) | 2024.05.09 |
|---|---|
| [프로그래머스/JAVA 자바] 배달 (2) | 2024.05.07 |
| [프로그래머스/JAVA 자바] 폰켓몬 (0) | 2024.04.25 |
| [프로그래머스/JAVA 자바] 달리기 경주 (0) | 2024.04.23 |
| [프로그래머스/JAVA 자바] 신고 결과 받기 (0) | 2024.04.21 |