Where who wants to meet someone

정수 제곱근 판별 본문

프로그래머스 알고리즘 문제 기록/Lv. 1

정수 제곱근 판별

Lust3r 2024. 5. 11. 21:16
728x90

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12934

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내 답안 / 다른 사람들의 답안

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