Where who wants to meet someone
정수 제곱근 판별 본문
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12934
내 답안 / 다른 사람들의 답안
import Foundation
func solution(_ n:Int64) -> Int64 {
let a = Int(sqrt(Double(n)))
return Int64(a * a) == n ? Int64((a + 1) * (a + 1)) : -1
}
- 제곱근이기에 sqrt를 사용하면 되겠다는 생각이 들었다
- 그러나 처음에는 let a = sqrt(Double(n)) 으로 수행했었는데 일부 케이스에서 문제가 발생했다. 반례를 찾아 확인해보니 제곱을 했을 때 소수점이 영향을 미쳤다. 이에 Int로 형변환을 하여 소수점을 제거하니 문제를 해결할 수 있었다.
import Foundation
func solution(_ n:Int64) -> Int64 {
let t = Int64(sqrt(Double(n)))
return t * t == n ? (t+1)*(t+1) : -1
}
- Int64도 동일하기 때문에 굳이 Int로 형변환을 할 필요가 없었다.
점수: +1
'프로그래머스 알고리즘 문제 기록 > Lv. 1' 카테고리의 다른 글
평균 구하기 (0) | 2024.05.12 |
---|---|
짝수와 홀수 (0) | 2024.05.12 |
정수 내림차순으로 배치하기 (0) | 2024.05.11 |
자연수 뒤집어 배열로 만들기 (0) | 2024.05.11 |
자릿수 더하기 (0) | 2024.05.10 |