https://school.programmers.co.kr/learn/courses/30/lessons/181916
정답
import java.util.Arrays;
class Solution {
public int solution(int a, int b, int c, int d) {
int answer = 0;
int list[] = {a,b,c,d};
Arrays.sort(list); //오름차순 정렬
//모두 같은 경우
if(list[0] == list[3])
{
return 1111*list[0];
}
//세 주사위가 같은 경우
else if(list[0] == list[2])
{
return (int)Math.pow((10*list[0]+list[3]),2);
}
else if(list[1]== list[3])
{
return (int)Math.pow((10*list[1]+list[0]),2);
}
//두 개씩 같을 경우
else if(list[0] == list[1] && list[2]==list[3])
{
return (list[0] + list[2])*Math.abs(list[0] - list[2]);
}
//두 개만 같고, 나머지는 각각 다를 경우
else if(list[0] == list[1] || list[1] == list[2] || list[2] == list[3])
{
if(list[0] == list[1])
{
return list[2]*list[3];
}
else if(list[1] == list[2])
{
return list[0]*list[3];
}
else
{
return list[0]*list[1];
}
}
//모두 다른 경우
else
{
return list[0];
}
}
}
다른 사람의 풀이
import java.util.*;
class Solution {
public int solution(int a, int b, int c, int d) {
Map<Integer, Integer> map = new HashMap<>();
for (int data : new int[] {a, b, c, d}) {
if (map.containsKey(data)) map.put(data, map.get(data) + 1);
else map.put(data, 1);
}
PriorityQueue<Dice> pq = new PriorityQueue<>();
for (int key : map.keySet())
pq.add(new Dice(key, map.get(key)));
int answer = 0;
if (pq.size() == 1) answer = pq.poll().number * 1111;
else if (pq.size() == 3) {
pq.poll();
answer = pq.poll().number * pq.poll().number;
} else if (pq.size() == 4) {
pq.poll(); pq.poll(); pq.poll();
answer = pq.poll().number;
} else {
Dice maxDice = pq.poll();
Dice next = pq.poll();
if (maxDice.count == 3) {
answer = (10 * maxDice.number + next.number) * (10 * maxDice.number + next.number);
} else {
answer = (maxDice.number + next.number) * ((int)(Math.abs(maxDice.number - next.number)));
}
}
return answer;
}
public class Dice implements Comparable<Dice> {
int number;
int count;
public Dice(int number, int count) {
this.number = number;
this.count = count;
}
@Override
public int compareTo(Dice o) {
if (this.count == o.count)
return o.number - this.number;
return o.count - this.count;
}
}
}
'Java > 프로그래머스' 카테고리의 다른 글
[JAVA] 프로그래머스 - 9로 나눈 나머지 (0) | 2024.03.22 |
---|---|
[JAVA] 프로그래머스 - 글자 이어 붙여 문자열 만들기 (0) | 2024.03.22 |
[JAVA] 프로그래머스 - 간단한 논리 연산 (0) | 2024.03.22 |
[JAVA] 프로그래머스 - 배열 만들기 4 (0) | 2024.03.21 |
[JAVA] 프로그래머스 - 콜라츠 수열 만들기 (0) | 2024.03.21 |