
내가 작성한 코드
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);
}
if (a == b || b == c || c == a) {
return (a + b + c) * (a * a + b * b + c * c);
}
return a + b + c;
}
}
다른 사람의 코드
class Solution {
public int solution(int a, int b, int c) {
int answer = 1; // 최종 결과를 저장할 변수, 초기값은 곱셈을 위해 1로 설정
int count = 1; // 기본 count 값은 1, 이는 세 숫자가 모두 다를 경우를 의미
// 두 수가 같으면 count 증가 (중복된 수가 있을 경우)
if (a == b || a == c || b == c) {
count++;
}
// 세 수가 모두 같으면 count 추가 증가 (모든 숫자가 같을 경우)
if (a == b && b == c) {
count++;
}
// count 값만큼 반복하여 곱셈 수행
// count가 1이면 다 다른 경우 (1차식만 곱)
// count가 2이면 두 수가 같은 경우 (1차, 2차식 곱)
// count가 3이면 세 수가 같은 경우 (1차, 2차, 3차식 곱)
for (int i = 1; i <= count; i++) {
// 각 차수의 a^i + b^i + c^i 값을 곱함
answer *= (pow(a, i) + pow(b, i) + pow(c, i));
}
return answer; // 최종 결과 반환
}
// 거듭제곱을 계산하는 재귀 메서드
private int pow(int a, int b) {
if (b == 0) return 1; // 지수가 0이면 결과는 1 (a^0 = 1)
return a * pow(a, b - 1); // 재귀적으로 a * a^(b-1) 수행
}
}
Share article