Coding Test/Java Coding Test
[프로그래머스 / 자바] - 주사위 게임 2
nam_ji
2024. 6. 6. 18:30
주사위 게임 2
문제
- 정수 a, b, c가 매개변수로 주어집니다.
- a, b, c는 1 ~ 6까지인 주사위 3개가 있다고 했을 때,
- 그 3개 주사위를 굴렸을 때 나오는 값을 의미합니다.
- 이때,
- 세 숫자가 모두 다르다면 a + b + c점
- 셋 숫자 중 두 숫자만 같다면 (a + b + c) × (a^2 + b^2 + c^2)점
- 세 숫자가 모두 같다면 (a + b + c) × (a^2 + b^2 + c^2 ) × (a^3 + b^3 + c^3 )점을 얻습니다.
- 요구사항에 맞게 점수를 출력하는 문제입니다.
-
a b c result 2 6 1 9 5 3 3 473 4 4 4 110592
테스트 (인텔리제이)
- 3가지 조건을 위해 if문을 사용합니다.
- 그리고 Math 클래스의 pow 메서드를 이용하여 제곱을 계산합니다.
- 여기서 제곱은 동일 코드가 생기기 때문에 따로 메서드를 빼서 작성했습니다. 빼는 과정에 세제곱 메서드도 따로 만들어 반환받게 했습니다.
- 풀이를 마치고 다른사람 풀이를 봤는데 더 간결해 보이는 코드가 있어 가져와 봤습니다.
- pow 메서드를 사용하지 않고 같은 값을 2번 3번 곱하게 하는 방법이며, a + b + c는 3조건 모두 해당되는 계산식이기 때문에 answer 변수에 a + b + c로 초기화 해두고 if문으로 두 숫자만 같은 경우 하나와 세 수가 모두 같은 경우 두가지만 제어하게 하고 두 조건에 해당하지 않으면 answer를 출력하게 한 풀이였습니다.
import java.util.Scanner;
public class 주사위_게임_2 {
public static void main(String[] args) {
/*
정수 a, b, c가 매개변수로 주어집니다.
a, b, c는 1 ~ 6까지인 주사위 3개가 있다고 했을 때,
그 3개 주사위를 굴렸을 때 나오는 값을 의미합니다.
이때,
1. 세 숫자가 모두 다르다면 a + b + c점
2. 셋 숫자 중 두 숫자만 같다면 (a + b + c) × (a^2 + b^2 + c^2)점
3. 세 숫자가 모두 같다면 (a + b + c) × (a^2 + b^2 + c^2 ) × (a^3 + b^3 + c^3 )점을 얻습니다.
요구사항에 맞게 점수를 출력하는 문제입니다.
a b c result
2 6 1 9
5 3 3 473
4 4 4 110592
*/
Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
int c = in.nextInt();
int answer = a + b + c;
if (a == b && b == c) {
answer =
answer *
(a * a + b * b + c * c) *
(a * a * a + b * b * b + c * c * c);
} else if (a == b || b == c || a == c) {
answer = answer * (a * a + b * b + c * c);
}
System.out.println(answer);
// if (a == b && b == c) {
// System.out.println((a+b+c) * mathTwoPow(a, b, c) * mathThreePow(a, b, c));
// } else if (a != b && b != c && a != c) {
// System.out.println(a + b + c);
// } else {
// System.out.println((a+b+c) * mathTwoPow(a, b, c));
// }
// }
//
// private static int mathTwoPow(int a, int b, int c) {
// return (int) (Math.pow(a, 2) + Math.pow(b, 2) + Math.pow(c, 2));
// }
//
// private static int mathThreePow(int a, int b, int c) {
// return (int) (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3));
// }
}
}
프로그래머스 코드
class Solution {
public int solution(int a, int b, int c) {
int answer = a + b + c;
if (a == b && b == c) {
answer =
answer *
(a * a + b * b + c * c) *
(a * a * a + b * b * b + c * c * c);
} else if (a == b || b == c || a == c) {
answer = answer * (a * a + b * b + c * c);
}
return answer;
}
}
// class Solution {
// public int solution(int a, int b, int c) {
// if (a == b && b == c) {
// return (a+b+c) * mathTwoPow(a, b, c) * mathThreePow(a, b, c);
// } else if (a != b && b != c && a != c) {
// return a + b + c;
// } else {
// return (a+b+c) * mathTwoPow(a, b, c);
// }
// }
// private static int mathTwoPow(int a, int b, int c) {
// return (int) (Math.pow(a, 2) + Math.pow(b, 2) + Math.pow(c, 2));
// }
// private static int mathThreePow(int a, int b, int c) {
// return (int) (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3));
// }
// }