반응형
SOL )
class Solution {
public int solution(int a, int b, int c) {
// a = b = c
if (a == b && b == c && c == a) {
return (a*3) * ((int)(Math.pow(a, 2)) * 3) * ((int)(Math.pow(a, 3)) * 3);
} else if (a != b && b != c && c != a) { // a != b != c
return a + b + c;
} else {
return (a + b + c) * (int)((Math.pow(a, 2)) + (Math.pow(b, 2)) + (Math.pow(c, 2)));
}
}
}
if문으로 위에서부터 조건을 나눠주었다.
- 세 숫자가 같은경우
- 세 숫자가 모두 다른경우
- 위 두가지 경우가 아닌, 세 숫자 중 어느 두 숫자만 같고 나머지 하나의 숫자는 다른경우
다른건 딱히 눈여겨볼만한게 없는 것 같고,
제곱 함수인 Math.pow() 를 활용하는 것과 이 함수를 활용했을때 그 결과값이 double 이므로
위와 같이 곱셈을 위해서는 이 실수형을 정수형으로 변환해줘야 하는 부분이었다.
이 부분은 앞에 (int) 를 붙여 해결해주었다.
OTHER SOL )
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);
}
}
위 풀이와 같이 풀 수도 있구나 생각하게된 풀이..!
사실 이 풀이는 좀 어려웠다.
그래서 다른 풀이도 보다가 찾은 훨씬 쉽고 짧은 풀이가 아래 풀이이다.
function solution(a, b, c) {
if(a === b && b === c && a === c) return (a + b + c) * (a**2 + b**2 + c**2 ) * (a**3 + b**3 + c**3)
if(a === b || b === c || a=== c) return (a + b + c) * (a**2 + b**2 + c**2)
return a+b+c
}
반응형
'coding test > Java' 카테고리의 다른 글
프로그래머스 ) lv.0 ) Java ) 이어 붙인 수 (0) | 2023.06.22 |
---|---|
프로그래머스 ) lv.0 ) Java ) 원소들의 곱과 합 (0) | 2023.06.22 |
프로그래머스 ) lv.0 ) 등차수열의 특정한 항만 더하기 (0) | 2023.06.21 |
프로그래머스 ) lv.0 ) 조건 문자열 (0) | 2023.06.21 |
프로그래머스 ) lv.0 ) 홀짝에 따라 다른 값 반환하기 (0) | 2023.06.21 |
댓글