► 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
반응형