문제

코드 보기
더보기
내풀이
import Foundation
func solution(_ n:Int64) -> Int64 {
return sqrt(Double(n)) - floor(sqrt(Double(n))) > 0 ? -1 : Int64(pow(sqrt(Double(n))+1, 2))
}
다른 사람의 풀이
import Foundation
func solution(_ n:Int64) -> Int64 {
let t = Int64(sqrt(Double(n)))
return t * t == n ? (t+1)*(t+1) : -1
}
느낀점
이번 문제를 통해서 Foundation 프레임워크의 제곱(pow) 함수와 제곱근(sqrt) 함수 그리고 버림(floor) 함수를 알게 됐습니다.
문제는 위 두 함수를 사용하면 간단하게 해결됩니다.
요새 삼항연산자에 재미를 들려 ... 가독성엔 그리 좋지 않지만 삼항연산자로 코드 수를 줄여봤고 함수를 사용하여 별다른 로직이 들어가지 않습니다.
로직을 간단히 설명드리자면 제곱근을 구했을 때에 나오는 값에 정수 부분을 뺄셈했을 때 0보다 크면, 즉 소수 자리 숫자가 있으면 -1을 출력하고 아니라면 제곱근을 출력하는 로직입니다.
//제곱근을 구했을 때에 나오는 값
sqrt(Double(n))
//위 값의 정수부분
floor(sqrt(Double(n)))
이상으로 프로그래머스의 제곱근 판별 문제를 마치도록 하겠습니다.
감사합니다:)
'Algorithm의 모든것' 카테고리의 다른 글
| [Algorithm의 모든것] Swift_스택(Stack) (0) | 2021.03.22 |
|---|---|
| [Algorithm의 모든것] (Swift)프로그래머스-크레인 인형뽑기 게임 (0) | 2020.11.27 |
| [Algorithm의 모든것] (Swift)프로그래머스-다리를 지나는 트럭 (0) | 2020.08.27 |
| [Algorithm의 모든것] (Swift)프로그래머스-자연수 뒤집어 배열로 만들기 (0) | 2020.06.28 |
| [Algorithm의 모든것] 프로그래머스-문자열 다루기 기본 (0) | 2020.06.04 |