728x90

숫자 4개의 등장 횟수, 즉 빈도수를 Map으로 세고 서로 다른 숫자의 개수는 map.size()를 사용해서 나눈다는 것이 문제의 키포인트입니다.
| map.size() | 의미 |
| 1 | 4개 다 같음 |
| 2 | 3+1 또는 2+2 |
| 3 | 2+1+1 |
| 4 | 전부 다름 |
문제 풀이
import java.util.*;
class Solution {
public int solution(int a, int b, int c, int d) {
int answer = 0;
int[] arr= {a,b,c,d};
Arrays.sort(arr); // 일단 배열 정렬한 다음에 진행
Map<Integer, Integer> map = new HashMap<>();
//빈도수 세기
map.put(a, map.getOrDefault(a,0) + 1); // a가 이미 map에 있으면 가져오고 없으면 디폴트 값으로 0
map.put(b, map.getOrDefault(b,0) + 1);
map.put(c, map.getOrDefault(c,0) + 1);
map.put(d, map.getOrDefault(d,0) + 1);
if(map.size() ==1 ) return a * 1111; //숫자 4개가 모두 같을 때
if(map.size() ==2 ) { // 사이즈가 2일 때
if(map.containsValue(3)){ // 3번 나온 숫자가 있는 경우
for(Map.Entry<Integer, Integer> el : map.entrySet()){ //entrySet은 key와 Value를 한쌍으로 묶은 집합 반환
answer += el.getKey() * (el.getValue() == 3 ? 10 : 1);//세 번 나온 숫자면 10, 아니면 1
}
return answer * answer; // 제곱
}
int x =(a+b+c+d-2*a)/2;// 전체합으로 다른 숫자 구하기 (2개씩 같은 숫자일때)
return (a+x) * Math.abs(a-x); //abs는 절대값
}
if(map.size() ==3){
answer =1;
for(Map.Entry<Integer, Integer> el : map.entrySet()){
if (el.getValue() != 2) answer *= el.getKey(); // 값이 같은 것이 2개 있지 않다면 그냥 남은 다른 수끼리 곱한다
}
return answer;
}
return Math.min(Math.min(a, b), Math.min(c, d)); // 숫자가 다 다르면 가장 작은 숫자가 점수로 체킹됨
}
}
빈도수 세기는 코테에서 자주 나오는 패턴이니 외우기
map.put(a, map.getOrDefault(a,0) + 1);
containsValue(3)
map.containsValue(3)
값 중에서 3번 나온 경우가 있는 지 체킹할 때 containsValue 함수로 확인합니다.
entrySet() + for문
for(Map.Entry<Integer, Integer> el : map.entrySet())
map.entrySet()은 key, value 묶음을 전부 가져온다는 것입니다. 따라서 Map.Entry<Integer,Integer> 은 하나의 Key valu쌍입니다.
=> map 안에 있는 (key,value) 묶음을하나씩 el에 담아서 반복하는 것
⭐for (타입 변수 : 집합)
=> 집합 안의 요소를 하나씩 꺼내서 변수에 담고 반복하는 문법
for (String item : list) { System.out.println(item); }
보통 집합 순회 해야 할 때 많이 사용한다
728x90
'{Algortihm} > Java' 카테고리의 다른 글
| [백준] 2745번 진법 변환 - JAVA (0) | 2026.01.09 |
|---|---|
| [백준] 10988번 팰린드롬 - JAVA (0) | 2025.09.23 |
| [백준] 2178번 미로 탐색하기 - JAVA (0) | 2025.09.16 |
| [백준] 17136번 색종이 붙이기 - JAVA (0) | 2025.09.15 |
| [백준] 9663번 N-Queen 배치하기 - JAVA (0) | 2025.09.12 |