내 풀이
func solution(_ n:Int64) -> Int64 {
for i in 1...Int(n) {
if Int(n) / i == i && Int(n) % i == 0{
return Int64((i + 1) * (i + 1))
}
}
return -1
}
- for 루프를 통해 i를 1부터 n까지 증가
- if 문에서 현재의 i가 n으로 나누어 떨어지고(Int(n) % i == 0) 그 몫이 i와 같다면(Int(n) / i == i) 이는 n이 i의 제곱이라는 의미
- 만약 n이 i의 제곱이라면, (i + 1) * (i + 1)을 계산하여 반환, 이는 x+1의 제곱을 의미
- 위의 모든 조건이 만족하지 않는 경우 -1을 반환
간단한 루프와 조건문을 사용하여 n이 양의 정수 x의 제곱인지 여부를 판단하고, 그에 따른 값을 반환하는 방식이다. 그러나 이 방법은 n이 큰 경우에는 효율적이지 않을 수 있다. 제곱근을 활용하여 더 효율적으로 문제를 해결할 수 있는데 아래는 제곱근을 활용한 코드이다.
import Foundation
func solution(_ n: Int64) -> Int64 {
let x = Int64(sqrt(Double(n)))
return x * x == n ? (x + 1) * (x + 1) : -1
}
' 𝗔𝗣𝗣𝗟𝗘 > ALGORITHM' 카테고리의 다른 글
[내일배움캠프] 데일리 루틴(iOS_3회차) - 하샤드 수 (1) | 2024.02.06 |
---|---|
[내일배움캠프] 데일리 루틴(iOS_3회차) - 정수 내림차순으로 배치하기 (0) | 2024.02.06 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 문자열을 정수로 바꾸기 (0) | 2024.02.01 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 자연수 뒤집어 배열로 만들기 (0) | 2024.01.31 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 배열의 평균값 (0) | 2024.01.31 |