1. 문제
2. 제출 답안
class Solution {
public int solution(int a, int b, int c) {
if (a == b && b == c) { // 세 주사위가 모두 같은 숫자
return (a + b + c) * (a * a + b * b + c * c) * (a * a * a + b * b * b + c * c * c);
} else if (a == b || b == c || a == c) { // 두 개의 숫자가 같고 나머지가 다르면
return (a + b + c) * (a * a + b * b + c * c);
} else { // 세 개가 모두 다른 경우
return a + b + c;
}
}
}
3. 다른 풀이
class Solution {
public int solution(int a, int b, int c) {
int answer = 1;
int count = 1;
if(a == b || a == c || b == c) { // 두 개의 주사위가 같은 경우
count++;
}
if(a == b && b == c) { // 세 개의 주사위가 같은 경우
count++;
}
for(int i = 1; i <= count; i++) { // count만큼 반복
answer *= (pow(a,i)+pow(b,i)+pow(c,i)); // 각 주사위 값을 i제곱한 합이 계산됨. 이 값이 answer에 곱해짐.
}
return answer;
}
// 재귀 함수
private int pow(int a, int b) { // a를 b제곱한 값을 반환
if(b == 0) return 1;
return a * pow(a, b-1);
}
}
Math.pow 함수는 숫자의 거듭제곱 연산을 수행하는 함수이다.
private int pow(int a, int b) { // 첫 번째 인수가 밑, 두 번째 인수가 지수
if (b == 0) return 1; // 지수가 0이면 1을 반환
return a * pow(a, b - 1); // 재귀적으로 a를 (b-1)번 곱함
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.0 이어 붙인 수(Java) (0) | 2023.10.25 |
---|---|
[프로그래머스] Lv.0 원소들의 곱과 합(Java) (0) | 2023.10.25 |
[프로그래머스] Lv.0 등차수열의 특정한 항만 더하기(Java) (1) | 2023.10.25 |
[프로그래머스] Lv.0 코드 처리하기(Java)※ (0) | 2023.10.25 |
[프로그래머스] Lv.0 flag에 따라 다른 값 반환하기(Java) (0) | 2023.10.23 |