[알고리즘문제풀기] 주사위 게임 3

silver's avatar
Oct 19, 2025
[알고리즘문제풀기] 주사위 게임 3

문제

내가 작성한 정답

import java.util.*; class Solution { public int solution(int a, int b, int c, int d) { int[] arr = {a, b, c, d}; Arrays.sort(arr); int aa = arr[0], bb = arr[1], cc = arr[2], dd = arr[3]; // aaaa if (aa == dd) return aa * 1111; // aaab else if (aa == cc) return (int) Math.pow(aa * 10 + dd, 2); // abbb else if (bb == dd) return (int) Math.pow(dd * 10 + aa, 2); // aabb else if (aa == bb && cc == dd) return (aa + dd) * Math.abs(aa - dd); // aabc else if (aa == bb) return cc * dd; // abbc else if (bb == cc) return aa * dd; // abcc else if (cc == dd) return aa * bb; // abcd else return aa; } }

다른 사람들의 정답

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; } } }
Share article

silver