► Swift

[Programmers] Swift 알고리즘 | Lv.0 제곱수 판별하기

다람트리 2024. 2. 21. 20:12
반응형

🔒 문제 설명

어떤 자연수를 제곱했을 나오는 정수를 제곱수라고 합니다. 정수 n 매개변수로 주어질 , n 제곱수라면 1 아니라면 2 return하도록 solution 함수를 완성해주세요.


🔒 제한사항  

  • 1 ≤ n ≤ 1,000,000

🔒 입출력 예

n result
144 1
976 2

🔒 입출력 예 설명

입출력 예 #1

  • 144는 12의 제곱이므로 제곱수입니다. 따라서 1을 return합니다.

입출력 예 #2

  • 976 제곱수가 아닙니다. 따라서 2 return합니다.

 

🔐 solution of mine

For 문 

If 문 

import Foundation

func solution(_ n:Int)-> Int{
    for i in 1...n{
        if(i*i == n){return 1}
    }
    return 2
}

 

 


 

🔐 solution of others

sqrt() - 제곱근 구하기

Double() - Double 자료형은 소수점 이하 15자리

floor()

func solution(_ n: Int) -> Int {sqrt(Double(n)) == floor(sqrt(Double(n))) ? 1 : 2}

solution(144)    //output: 1
solution(976)    //output: 2

 

◆ 해설집 - 풀이과정1

import Foundation

func solution(_ n: Int) -> Int {
    print(Double(n))                //output: 144.0
    print(sqrt(Double(n)))          //output: 12.0
    print(floor(sqrt(Double(n))))   //output:12.0
    return sqrt(Double(n)) == floor(sqrt(Double(n))) ? 1 : 2

}
solution(144)    //output: 1

 

◆ 해설집 - 풀이과정2

import Foundation

func solution(_ n: Int) -> Int {
    print(Double(n))                 //output: 976.0
    print(sqrt(Double(n)))           //output: 31.240998703626616
    print(floor(sqrt(Double(n))) )   //output: 31.0
    return sqrt(Double(n)) == floor(sqrt(Double(n))) ? 1 : 2
}
solution(976)    //output: 2

 

◆ 해설집 - Double과 Float 차이

 - Double 자료형은 소수점 이하 15자리의 정밀도

 - Float 자료형은 소수점 이하 6자리의 정밀도

 - Float보다는 Double 권장하는 편

 

◆ 해설집 - pow()와 sqrt()

 - pow() : 제곱 구하기

 - sqrt() : 제곱근 구하기

 - 예시코드

import Foundation

func solution(_ n:Int) ->Int{
    print(sqrt(Double(n)))      //output: 3.0
    print(pow(Double(n),2))     //output: 81.0
    return 0
}

solution(9)

 

🔐 solution of others

sqrt() - 제곱근 구하기

Double() - Double 자료형은 소수점 이하 15자리

Int()

import Foundation

func solution(_ n:Int)->Int{
    let root = Int(sqrt(Double(n)))
    return root * root == n ? 1:2
}

solution(144)    //output: 1
solution(976)    //output: 2

 

 


 

반응형