반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 프로그래머스(Lv.1) - 정수 제곱근 판별 문제를 풀었습니다.
목차
Github
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12934
풀이
해당 문제는 첫 진입을 잘못 해서 꽤 헤맸습니다.
Int64()를 이용해 11.0 이면 11이 되고 11.xxx면 nil이 되게끔 하고 싶었는데 그렇게 동작되지 않더라고요.
그래서 소수점을 ceil(올림)해준 Double형을 Int64로 변환하고 이 값의 제곱이 input 값과 동일한지 체크하여 문제를 해결했습니다.
11.0은 올려도 11인데 그게 아니면 12가 되어 답이 나오겠다는 생각이었습니다.
전체 코드
import Foundation
func solution(_ n:Int64) -> Int64 {
let sqrtNum = Int64(ceil(sqrt(Double(n))))
return Int64(sqrtNum * sqrtNum == n ? (sqrtNum+1) * (sqrtNum+1) : -1)
}
let n:Int64 = 3
print(solution(n))
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형