문제
내가 작성한 정답
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;
}
}
}
// 삼항연산자 - 이 문제에서는 가독성이 너무 안좋다
class Solution {
public int solution(int a, int b, int c) {
return (a == b && b == c)
? (a + b + c) * (a*a + b*b + c*c) * (a*a*a + b*b*b + c*c*c)
: (a == b || b == c || a == c)
? (a + b + c) * (a*a + b*b + c*c)
: a + b + c;
}
}다른 사람들의 정답
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++) {
answer *= (pow(a,i)+pow(b,i)+pow(c,i));
}
return answer;
}
private int pow(int a, int b) {
if(b == 0) return 1;
return a * pow(a, b-1);
}
}
// Set으로 중복 판단 → 중복되는 것의 개수를 확인하고 출력
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
class Solution {
public int solution(int a, int b, int c) {
Set<Integer> numbers = Stream.of(a, b, c).collect(Collectors.toSet());
return (a + b + c) *
(numbers.size() < 3 ? a * a + b * b + c * c : 1) *
(numbers.size() < 2 ? a * a * a + b * b * b + c * c * c : 1);
}
}Share article