Search
Duplicate
😡

주사위 게임 3

대분류
코딩 기초트레이닝
비고
소분류
해결못함
조건문
확인
피드백완료🧑🏻‍🏫
주사위 게임 3
문제
1부터 6까지 숫자가 적힌 주사위가 네 개 있습니다. 네 주사위를 굴렸을 때 나온 숫자에 따라 다음과 같은 점수를 얻습니다.
네 주사위에서 나온 숫자가 모두 p로 같다면 1111 × p점을 얻습니다.
세 주사위에서 나온 숫자가 p로 같고 나머지 다른 주사위에서 나온 숫자가 q(p ≠ q)라면 (10 × p + q) 점을 얻습니다.
주사위가 두 개씩 같은 값이 나오고, 나온 숫자를 각각 p, q(p ≠ q)라고 한다면 (p + q) × |p - q|점을 얻습니다.
어느 두 주사위에서 나온 숫자가 p로 같고 나머지 두 주사위에서 나온 숫자가 각각 p와 다른 q, r이라면 q × r점을 얻습니다.
네 주사위에 적힌 숫자가 모두 다르다면 나온 숫자 중 가장 작은 숫자 만큼의 점수를 얻습니다.
네 주사위를 굴렸을 때 나온 숫자가 정수 매개변수 abcd로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.
풀이
package programmers.codingBasicTraining; import java.util.*; public class PROB29 { public static void main(String[] args) { System.out.println(solution(2, 2, 2, 2)); System.out.println(solution(4, 1, 4, 4)); System.out.println(solution(6, 3, 3, 6)); System.out.println(solution(2, 5, 2, 6)); System.out.println(solution(6, 4, 2, 5)); } public static int solution (int a, int b, int c, int d) { /* * 1. 4개 모두 같은 숫자 * 2. 3개 같은숫자, 1개 다른숫자 * 3. 두개 같은 숫자 * 4. 두개 같은숫자, 각각 다른숫지 * 5. 모드 다른 숫자 * */ int ret = 0; // 점수 Set<Integer> set = new HashSet<>(); // 중복 체크 하는 단위 int[] board = new int[7]; // 4개의 주사위 숫자 acc set.add(a); set.add(b); set.add(c); set.add(d); board[a]++; board[b]++; board[c]++; board[d]++; if (set.size() == 1) { // 모두 같은 숫자 ret = set.stream().findFirst().get() * 1111; } else if (set.size() == 2) { /* 같은게 두개가 있다 * case 1. 2 : 2 * case 2. 1 : 3 * case 3. 3 : 1 * */ List<Integer> list = new ArrayList<>(set); int first = list.get(0); int second = list.get(1); if (board[first] == 2) { // case 1. ret = (first + second) * Math.abs(first - second); } else if (board[first] == 3) { // case 3. ret = (first*10 + second) * (first*10 + second); } else { // case 2. ret = (first + second*10) * (first + second*10); } } else if (set.size() == 3) { // 3개가 겹침 List<Integer> list = new ArrayList<>(set); int first = list.get(0); int second = list.get(1); int third = list.get(2); if (board[first] == 1 && board[second] == 1) { ret = first * second; } else if (board[first] == 1 && board[third] == 1) { ret = first * third; } else { ret = second * third; } } else { ret = Math.min(Math.min(Math.min(a, b), c), d); } return ret; } }
Java
복사