문제: https://school.programmers.co.kr/learn/courses/30/lessons/181916
import java.util.*;
class Solution {
public int solution(int a, int b, int c, int d) {
int p, q, r, cnt;
Map<Integer, Integer> m = new HashMap<>();
int[] list = new int[]{a,b,c,d};
for(int i : list){
m.put(i, m.getOrDefault(i, 0) + 1);
}
List<Map.Entry<Integer, Integer>> entry = new ArrayList<>(m.entrySet());
entry.sort((e, f) -> f.getValue() - e.getValue());
int key = entry.get(0).getValue();
if(key == 4){
// 1111 x p
return 1111 * entry.get(0).getKey();
}else if(key == 3){
// (10 × p + q)2
p = entry.get(0).getKey();
q = entry.get(1).getKey();
return (10 * p + q)*(10 * p + q);
}else if(key == 2){
if(entry.get(1).getValue() == 2){
// (p + q) * |p-q|
p = entry.get(0).getKey();
q = entry.get(1).getKey();
return (p + q) * Math.abs(p-q);
}
// q * r
return entry.get(1).getKey() * entry.get(2).getKey();
}
entry.sort((e,f)-> f.getKey() - e.getKey());
return entry.get(3).getKey();
}
}
인덱스를 다루는 것은 항상 항상 항상 OutOfBoundsException
를 주의해야합니다. 꼼꼼히 범위를 체크하도록!