
import Foundation
func solution(_ a:Int, _ b:Int, _ c:Int) -> Int {
var result = 0
if (a == b) && (a == c) {
result = (a + b + c) * (a^2 + b^2 + c^2) * (a^3 + b^3 + c^3)
} else if (a == b) || (b == c) || (a == c) {
result = (a + b + c) * (a^2 + b^2 + c^2)
} else {
result = a + b + c
}
return result
}
^ 연산자가 제곱이 아닌 비트 XOR 연산자로 사용된다.n^2와 같은 표기법을 사용할 수 없다.import Foundation
func solution(_ a:Int, _ b:Int, _ c:Int) -> Int {
var result = 0
let sum1 = a + b + c
let sum2 = a*a + b*b + c*c
let sum3 = a*a*a + b*b*b + c*c*c
if (a == b) && (a == c) {
result = sum1 * sum2 * sum3
} else if (a == b) || (b == c) || (a == c) {
result = sum1 * sum2
} else {
result = sum1
}
return result
}
pow() 함수는 Double 타입에서 작동한다.
이 함수를 사용하려면 a, b, c가 Int 타입이기에, 이를 Double로 변환해야 하는 번거로움이 있다.
모든 계산이 Double로 이루어지므로 결과도 Double이 된다.
Int 타입의 결과를 위해 한 번 더 변환이 필요하다.
정밀도 문제
매우 큰 숫자의 경우 부동 소수점 연산의 정밀도 한계로 인해 정확한 결과를 얻지 못할 수 있다.
성능
pow() 함수는 일반 곱셈보다 계산 비용이 더 크다. 특히 2제곱과 3제곱은 곱셈(*)을 통해 직접 표현하는 것이 더 효율적이다.
^ 연산이 XOR 연산으로 처리된다니. C언어와는 달라서 당연히 풀리겠거니 생각한 문제가 오답처리 돼서 당황했다.
4제곱 이상 시에는 pow 함수 쓰기, 3제곱 이하라면 직접 곱하기 기억하기.