본인 풀이
class Solution {
public int solution(int a, int b, int c, int d) {
int answer = 0;
int aSame = 0, bSame = 0, cSame = 0, dSame = 0;
//a 기준 a랑 같은 것의 개수
if(a == b) aSame++;
if(a == c) aSame++;
if(a == d) aSame++;
//b 기준 b랑 같은 것의 개수
if(a == b) bSame++;
if(c == b) bSame++;
if(d == b) bSame++;
//c 기준 c랑 같은 것의 개수
if(c == a) cSame++;
if(c == b) cSame++;
if(c == d) cSame++;
//d 기준 d랑 같은 것의 개수
if(d == a) dSame++;
if(d == b) dSame++;
if(d == c) dSame++;
int[] cntArr = new int[4];
cntArr[aSame]++;
cntArr[bSame]++;
cntArr[cSame]++;
cntArr[dSame]++;
/*
* 모두 3가 나오면 : equalFour
* 2이 세 번, 0이 한 번 나오면: equalThree
* 1가 4번 나오면 : equalDoualeTwo
* 1가 2번 나오면 : equalTwo
* 0이 4번 나오면: diffAll
*/
if(cntArr[3] == 4){
answer = 1111 * a;
} else if(cntArr[2] == 3 && cntArr[0] == 1){
if(a != b && b == c){
answer = (10 * b + a) * (10 * b + a);
} else if(b != c && c == d){
answer = (10 * c + b) * (10 * c + b);
} else if(c != d && d == a){
answer = (10 * d +c) * (10 * d + c);
} else{
answer = (10 * a + d) * (10 * a + d);
}
} else if(cntArr[1] == 4){
if(a != b){
answer = (a + b) * Math.abs(a - b);
} else if(a != c){
answer = (a + c) * Math.abs(a - c);
} else if(a != d){
answer = (a + d) * Math.abs(a - d);
}
} else if(cntArr[1] == 2){
if(a == b) answer = c * d;
else if(a == c) answer = b * d;
else if(a == d) answer = b * c;
else if(b == c) answer = a * d;
else if(b == d) answer = a * c;
else if(c == d) answer = a * b;
} else if(cntArr[0] == 4){
answer = Math.min(a, Math.min(b,Math.min(c,d)));
}
return answer;
}
}
다른 분들의 멋진 풀이
Arrays.sort를 이용해 푸셨다.
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);
int ans = 0;
if (dice[0] == dice[3]) {
ans = 1111 * dice[3];
} else if (dice[0] == dice[2] || dice[1] == dice[3]) {
ans = (int) Math.pow(dice[1] * 10 + (dice[0] + dice[3] - dice[1]), 2);
} else if (dice[0] == dice[1] && dice[2] == dice[3]) {
ans = (dice[0] + dice[3]) * (dice[3] - dice[0]);
} else if (dice[0] == dice[1]) {
ans = dice[2] * dice[3];
} else if (dice[1] == dice[2]) {
ans = dice[0] * dice[3];
} else if (dice[2] == dice[3]) {
ans = dice[0] * dice[1];
} else {
ans = dice[0];
}
return ans;
}
}
https://school.programmers.co.kr/learn/courses/30/lessons/181916
'코딩테스트 > Programmers' 카테고리의 다른 글
정사각형으로 만들기 (0) | 2025.01.23 |
---|---|
[프로그래머스] 전국 대회 선발 고사 (0) | 2025.01.23 |
[프로그래머스] 홀짝에 따라 다른 값 반환하기 (0) | 2025.01.22 |
[프로그래머스] 배열 만들기 2 (0) | 2025.01.22 |
[프로그래머스] 정수를 나선형으로 배치하기 (0) | 2025.01.22 |