프로그래머스 1단계) 정수 제곱근 판별
2021. 12. 3. 14:55ㆍAlgorithm/알고리즘
728x90
반응형
문제
첫번째 시도
func solution(_ n:Int64) -> Int64 {
var x:Int
if x > 0 && n == x * x {
return (x + 1) * (x + 1)
} x > 0 && n != x * x {
return -1
}
}
14:30 - 15:00
제출통과
import Foundation
func solution(_ n:Int64) -> Int {
var num = Int(pow(Double(n), 0.5))
let result = n == num * num ? (num + 1) * (num + 1) : -1
return result
}
유의미한 답변
//Q10.정수 제곱근 판별
import Foundation
func solution(_ n:Int64) -> Int {
let rootN = Int(pow(Double(n),0.5))
let result = rootN*rootN == n ? (rootN+1)*(rootN+1) : -1
return result
}
/*
n이 어떤 정수의 제곱근이라면,
n의 루트값이 소수부가 0일것이다.
그렇다면 다시 Int형으로 바꿔서 제곱해도 값은 그대로일거고
n이 어떤 정수의 제곱근이 아니라면
n의 루트값이 소수부가 존재하기에, int형으로 바꿔서 제곱하면 값이 달라져있을 것이다.
위 방식으로 제곱근 판별을 한 후 어떤 정수의 제곱근이라면 어떤 정수+1을해서 다시 제곱해주고 아니라면 -1 출력
*/
//다른 사람의 풀이
import Foundation
func solution(_ n:Int64) -> Int64 {
let t = Int64(sqrt(Double(n)))
return t * t == n ? (t+1)*(t+1) : -1
}
/*
잘 안찾아봐서 제곱근을 구해주는 sqrt메서드가 있는지 몰랐다.
어차피 0.5를 제곱해줘도 같은 값을 출력하기에 결과는 같다.
근데 0.5제곱을 하면 제곱근이 되는지 모르는 사람이 보기엔 코드가 헷갈릴 수 있으니 sqrt로 써야겠당*/
느낀점
너무 감이 안오는데..!
어떤타입으로 리턴되는지도 매우 중요한 부분 중 하나.
728x90
반응형
'Algorithm > 알고리즘' 카테고리의 다른 글
프로그래머스 1단계) 자연수 뒤집어 배열로 만들기 (0) | 2021.12.05 |
---|---|
프로그래머스 1단계) 정수 내림차순으로 배치하기 (0) | 2021.12.05 |
프로그래머스 1단계) 제일 작은 수 제거하기 (0) | 2021.12.03 |
프로그래머스 1단계) 최대공약수와 최소공배수 (0) | 2021.12.03 |
프로그래머스 1단계) 콜라츠추측 (0) | 2021.12.02 |