본문 바로가기

 𝗔𝗣𝗣𝗟𝗘/ALGORITHM

[내일배움캠프] 데일리 루틴(iOS_3회차) - 정수 제곱근 판별

이미지를 클릭하면 코딩테스트 페이지로 이동합니다

 

내 풀이

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
}

 

  1. for 루프를 통해 i를 1부터 n까지 증가
  2. if 문에서 현재의 i가 n으로 나누어 떨어지고(Int(n) % i == 0) 그 몫이 i와 같다면(Int(n) / i == i) 이는 n이 i의 제곱이라는 의미
  3. 만약 n이 i의 제곱이라면, (i + 1) * (i + 1)을 계산하여 반환, 이는 x+1의 제곱을 의미
  4. 위의 모든 조건이 만족하지 않는 경우 -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
}
Recent Posts
Visits
Today
Yesterday
Archives
Calendar
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31