목차
#1 주사위 게임 2
문제 설명
1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 세 주사위를 굴렸을 때 나온 숫자를 각각 a, b, c라고 했을 때 얻는 점수는 다음과 같다.
- 세 숫자가 모두 다르다면 a + b + c 점을 얻습니다.
- 세 숫자 중 어느 두 숫자는 같고 나머지 다른 숫자는 다르다면 (a + b + c) × (a2 + b2 + c2 )점을 얻습니다.
- 세 숫자가 모두 같다면 (a + b + c) × (a2 + b2 + c2 ) × (a3 + b3 + c3 )점을 얻습니다.
세 정수 a, b, c가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.
제한사항
- a, b, c는 1이상 6이하의 정수이다.
입출력 예
입출력 예 #1
- 예제 1번에서 세 주사위 숫자가 모두 다르므로 2 + 6 + 1 = 9점을 얻습니다. 따라서 9를 return 합니다.
입출력 예 #2
- 예제 2번에서 두 주사위 숫자만 같으므로 (5 + 3 + 3) × (52 + 32 + 32 ) = 11 × 43 = 473점을 얻습니다. 따라서 473을 return 합니다.
입출력 예 #3
- 예제 3번에서 세 주사위 숫자가 모두 같으므로 (4 + 4 + 4) × (42 + 42 + 42 ) × (43 + 43 + 43 ) = 12 × 48 × 192 = 110,592점을 얻습니다. 따라서 110592를 return 합니다.
#2 코드 및 알고리즘
class Solution {
public int solution(int a, int b, int c) {
int sum = 1;
if(a == b && b == c){
for(int i = 1; i <= 3; i++){
sum *= Math.pow(a,i) + Math.pow(b,i) + Math.pow(c,i);
} return sum;
} else if(a == b){
for(int i = 1; i <= 2; i++){
sum *= Math.pow(a,i) + Math.pow(b,i) + Math.pow(c,i);
} return sum;
} else if(b == c){
for(int i = 1; i <= 2; i++){
sum *= Math.pow(a,i) + Math.pow(b,i) + Math.pow(c,i);
} return sum;
} else if(c == a){
for(int i = 1; i <= 2; i++){
sum *= Math.pow(a,i) + Math.pow(b,i) + Math.pow(c,i);
} return sum;
} else {
return a + b + c;
}
}
}
------------------------------------------------
정확성 테스트
테스트 1 〉 통과 (0.08ms, 73.1MB)
테스트 2 〉 통과 (0.04ms, 81.9MB)
테스트 3 〉 통과 (0.04ms, 75.1MB)
테스트 4 〉 통과 (0.02ms, 71.2MB)
테스트 5 〉 통과 (0.06ms, 74.8MB)
테스트 6 〉 통과 (0.04ms, 86.9MB)
테스트 7 〉 통과 (0.03ms, 76.2MB)
테스트 8 〉 통과 (0.05ms, 76MB)
테스트 9 〉 통과 (0.03ms, 69.6MB)
테스트 10 〉 통과 (0.03ms, 65.9MB)
테스트 11 〉 통과 (0.04ms, 70.9MB)
테스트 12 〉 통과 (0.04ms, 82.9MB)
테스트 13 〉 통과 (0.04ms, 73.8MB)
테스트 14 〉 통과 (0.04ms, 77.9MB)
테스트 15 〉 통과 (0.06ms, 75.4MB)
테스트 16 〉 통과 (0.04ms, 74.3MB)
테스트 17 〉 통과 (0.02ms, 81.5MB)
테스트 18 〉 통과 (0.02ms, 78.1MB)
테스트 19 〉 통과 (0.06ms, 78.8MB)
테스트 20 〉 통과 (0.05ms, 79.3MB)
테스트 21 〉 통과 (0.02ms, 69.7MB)
테스트 22 〉 통과 (0.03ms, 71.4MB)
테스트 23 〉 통과 (0.04ms, 65.4MB)
테스트 24 〉 통과 (0.04ms, 64.4MB)
테스트 25 〉 통과 (0.08ms, 76.5MB)
테스트 26 〉 통과 (0.03ms, 73.7MB)
테스트 27 〉 통과 (0.06ms, 73.1MB)
테스트 28 〉 통과 (0.05ms, 77.7MB)
테스트 29 〉 통과 (0.03ms, 73.4MB)
테스트 30 〉 통과 (0.03ms, 70.5MB)
테스트 31 〉 통과 (0.02ms, 78.8MB)
테스트 32 〉 통과 (0.03ms, 75.9MB)
테스트 33 〉 통과 (0.05ms, 68.7MB)
테스트 34 〉 통과 (0.01ms, 72.4MB)
테스트 35 〉 통과 (0.04ms, 79.7MB)
테스트 36 〉 통과 (0.04ms, 78.4MB)
테스트 37 〉 통과 (0.02ms, 69.4MB)
테스트 38 〉 통과 (0.05ms, 76.2MB)
테스트 39 〉 통과 (0.04ms, 73.9MB)
테스트 40 〉 통과 (0.03ms, 73.6MB)
테스트 41 〉 통과 (0.03ms, 79.1MB)
테스트 42 〉 통과 (0.04ms, 73.6MB)
테스트 43 〉 통과 (0.05ms, 80.4MB)
테스트 44 〉 통과 (0.04ms, 77.1MB)
테스트 45 〉 통과 (0.02ms, 72.5MB)
테스트 46 〉 통과 (0.04ms, 75.7MB)
테스트 47 〉 통과 (0.04ms, 76.7MB)
테스트 48 〉 통과 (0.02ms, 69.4MB)
테스트 49 〉 통과 (0.04ms, 72.8MB)
테스트 50 〉 통과 (0.11ms, 73.2MB)
테스트 51 〉 통과 (0.03ms, 74.8MB)
테스트 52 〉 통과 (0.02ms, 68.4MB)
테스트 53 〉 통과 (0.03ms, 76.1MB)
테스트 54 〉 통과 (0.03ms, 69.5MB)
테스트 55 〉 통과 (0.05ms, 75.2MB)
테스트 56 〉 통과 (0.05ms, 68.7MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
풀이:
- a = b = c인 경우, a = b / b = c/ c= a인 경우, a != b != c인 경우.
- a = b = c인 경우
for문을 이용해 3번 반복하며 Math.pow를 이용해 a, b, c 각각 제곱을 구해 더한다. - a = b / b = c/ c= a인 경우
for문을 이용해 2번 반복하며 Math.pow를 이용해 a, b, c 각각 제곱을 구해 더한다. - a != b != c인 경우
a + b + c의 결과를 반환한다.
class Solution { // 위의 코드와 똑같은 원리이다.
public int solution(int a, int b, int c) {
if( a == b && b == c && c == a)
return (int)((Math.pow(a,1) * 3) * (Math.pow(a,2) * 3) * (Math.pow(a,3) * 3));
else if(a==b||a==c||b==c)
return (a + b + c) * (int)(Math.pow(a,2) + Math.pow(b,2) + Math.pow(c,2));
else
return (a + b + c);
}
}
728x90
'JAVA > 프로그래머스 코딩 기초 트레이닝' 카테고리의 다른 글
[프로그래머스, LV.0] 수 조작하기 1, 수 조작하기 2 (2) | 2023.05.19 |
---|---|
[프로그래머스, LV.0] 마지막 두 원소 (0) | 2023.05.17 |
[프로그래머스, LV.0] 등차수열의 특정한 항만 더하기 (0) | 2023.05.17 |
[프로그래머스, LV.0] 배열 만들기 2 (1) | 2023.05.17 |
[프로그래머스, LV.0] 주사위 게임 3 (2) | 2023.05.16 |