728x90
언어_자바
프로그래머스_주사위 게임 3
주사위 게임 3이 여러 가정을 생각하는 게 어려웠다 😢
다른 사람들 풀이를 보고 이해하고 풀이 없이 코드를 짜는 방식으로 이번에 진행했다.
public class DiceGame3 {
public static void main(String[] args) {
DiceSolution s = new DiceSolution();
int a = 4;
int b = 1;
int c = 4;
int d = 4;
s.diceSolution(a,b,c,d);
}
}
class DiceSolution{
public int diceSolution(int a, int b, int c, int d){
int[] dice = {a,b,c,d};
Arrays.sort(dice);
int answer = 0;
if(dice[0] == dice[3]){
answer = 1111 * dice[0];
}else if((dice[0] == dice[2] || dice[1] == dice[3])){ // 세 주사위의 값이 같으므로 dice[0] 혹은 dice[3] 의 값이 다르다
answer = (int)Math.pow(10 * dice[1] + (dice[0] + dice[3] - dice[1]), 2); // dice[1]은 세 번의 주사위의 값에 항상 포함 되므로 이 값을 이용해 같은 값을 제외시킨다.
}else if(dice[0] == dice[1] && dice[2] == dice[3]){
answer = (dice[0] + dice[3]) * (dice[3]-dice[0]);
}else if (dice[0] == dice[1]){
answer = dice[2] * dice[3];
}else if (dice[1] == dice[2]){
answer = dice[0] * dice[3];
}else if (dice[2] == dice[3]){
answer = dice[0] * dice[1];
}else{
answer = dice[0];
}
System.out.println(answer);
return answer;
}
}
Key Point 3
1. Arrays.sort() 로 정수 배열을 오름차순 정렬한다 ✨✨
2. 세 주사위의 수가 같은 경우에, {1,2,2,2}/ {1,1,1,2}와 같이 인덱스 처음과 마지막이 다른 경우를 생각한다.
OR 조건을 걸어준다.
3. (int) Math.pow(target, 2) 를 통해 target의 제곱을 한다. 여기서 dice[1] or dice[2] 는 공통되는 수이므로 이 값을 빼줌으로써 공통되는 값을 제거할 수 있다. 예) 1, 2, 2, 2 => 1 + 2 - 1 : 2란 다른 주사위와 다른 값이 나온다.
728x90
'Algorithm' 카테고리의 다른 글
✨ 알고리즘 문제 풀이 꿀팁 (0) | 2024.01.03 |
---|---|
✨ 알고리즘 관련 기초 자바 문법 (1) | 2024.01.01 |
[프로그래머스] (181913) 문자열 여러 번 뒤집기 (0) | 2023.12.28 |
[프로그래머스] (181921) 배열 만들기 2 (1) | 2023.12.26 |
[이것이 코딩 테스트다] (Ch03 그리디) 큰 수의 법칙 (0) | 2023.12.25 |