import java.util.Arrays;
class Solution {
public int solution(int a, int b, int c, int d) {
int[] dice = {a, b, c, d};
Arrays.sort(dice);
// 모두 같은 숫자인 경우
if (dice[0] == dice[1] && dice[1] == dice[2] && dice[2] == dice[3]) {
return 1111 * dice[0];
}
// 세 개가 같은 숫자인 경우
else if ((dice[0] == dice[1] && dice[1] == dice[2]) || (dice[1] == dice[2] && dice[2] == dice[3])) {
int sameValue = dice[1];
int differentValue = (dice[0] == dice[1]) ? dice[3] : dice[0];
return (10 * sameValue + differentValue) * (10 * sameValue + differentValue);
}
// 두 쌍의 동일한 숫자인 경우
else if (dice[0] == dice[1] && dice[2] == dice[3]) {
return (dice[0] + dice[2]) * Math.abs(dice[0] - dice[2]);
}
// 두 개는 같고 두 개는 각각 다른 경우
else if (dice[0] == dice[1] || dice[1] == dice[2] || dice[2] == dice[3]) {
return (dice[0] == dice[1]) ? dice[2] * dice[3] : (dice[1] == dice[2]) ? dice[0] * dice[3] : dice[0] * dice[1];
}
// 모두 다른 숫자인 경우
else {
return dice[0];
}
}
}
int[] dice = {a, b, c, d};
Arrays.sort(dice);
함수 입력으로 주어진 4개의 주사위 값을 배열에 저장한다 그리고 배열을 정렬해서 주사위 값을 쉽게 비교할 수 있게 한다
if (dice[0] == dice[1] && dice[1] == dice[2] && dice[2] == dice[3]) { return 1111 * dice[0]; }
4개의 주사위 값이 모두 같은 경우를 체크한다. 배열이 정렬되어있는 상태이므로 첫 번째 값이 dice[0] 이 나머지 모든 값과 같게 된다면 5개의 주사위 값이 모두 같은 것이다.
else if ((dice[0] == dice[1] && dice[1] == dice[2]) || (dice[1] == dice[2] && dice[2] == dice[3]))
3 개의 주사위 값이 같고 나머지 하나는 다른 경우를 체크하는 코드이다. 배열이 정렬되어 있으므로 첫 세개의 값이 같거나 마지막 세개의 값이 같은 경우로 표현한다.
else if (dice[0] == dice[1] && dice[2] == dice[3])
두 쌍의 주사위 값이 같은 경우를 체크한다. 첫 두개의 값이 같고 마지막 두개의 값이 같은 경우로 표현한다.
else if (dice[0] == dice[1] || dice[1] == dice[2] || dice[2] == dice[3])
이 코드는 두 개는 같고 두 개는 각각 다른 다른 값인 경우를 체크한다. 첫 두 개의 값이 같거나 중간 두 개의 값이 같거나 마지막 두 개의 값이 같은 경우로 나타낸다.
else { return dice[0]; }
마지막 위에 모든 조건이 해당되지 않을경우 4개의 주사위 값이 모두 다른경우이다. 이 경우 배열이 정렬되어 있으므로 첫번째 값이 되게 된다.