말하는 컴공감자의 텃밭

프로그래머스 주사위게임 -3 -자바 (java) 본문

알고리즘/Programmers - Java

프로그래머스 주사위게임 -3 -자바 (java)

현콩 2023. 6. 12. 13:17
728x90

프로그래머스 주사위게임 -3
if문 처리 문제

주사위의 같은 숫자의 개수에 따라서 점수가 달라진다.

 

  • 네 주사위에서 나온 숫자가 모두 p로 같다면 1111 × p점을 얻습니다.
  • 세 주사위에서 나온 숫자가 p로 같고 나머지 다른 주사위에서 나온 숫자가 q(p ≠ q)라면 (10 × p + q)2 점을 얻습니다.
  • 주사위가 두 개씩 같은 값이 나오고, 나온 숫자를 각각 p, q(p ≠ q)라고 한다면 (p + q) × |p - q|점을 얻습니다.
  • 어느 두 주사위에서 나온 숫자가 p로 같고 나머지 두 주사위에서 나온 숫자가 각각 p와 다른 q, r(q ≠ r)이라면 q × r점을 얻습니다.
  • 네 주사위에 적힌 숫자가 모두 다르다면 나온 숫자 중 가장 작은 숫자 만큼의 점수를 얻습니다.

세 주사위의 경우 제곱이 있어서

Math.pow()를 사용했다. 

예시코드 

 

1
2
double result = Math.pow(23);
System.out.println(result);  // 출력: 8.0
cs

 

문제 답.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.util.*;
 
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[3]) { // 4개 동일할때
            return 1111 * dice[3];
            
        } else if (dice[0== dice[2|| dice[1== dice[3]) { // 세개 같을때
            return (int) Math.pow(dice[1* 10 + (dice[0+ dice[3- dice[1]), 2);
            
        } else if (dice[0== dice[1&& dice[2== dice[3]) { // 둘둘 같을 때
            return (dice[0+ dice[3]) * Math.abs(dice[3- dice[0]);
            
        } else if (dice[0== dice[1]) { // 둘 하나하나 경우
            return dice[2* dice[3];
            
        } else if (dice[1== dice[2]) {
            return dice[0* dice[3];
            
        } else if (dice[2== dice[3]) {
            return dice[0* dice[1];
            
        } else if (dice[3== dice[0]) {
            return dice[1* dice[2];
        }else {
            return dice[0];
        }
    }
}
 
cs
728x90
Comments