프로그래머스 1단계) 정수 제곱근 판별

2021. 12. 3. 14:55Algorithm/알고리즘

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로 써야겠당*/

 

https://where-i-am.tistory.com/entry/iOS-Swift-%EA%B8%B0%EB%B3%B8-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%98%95%EC%8B%9D-%ED%83%80%EC%9E%85-%EB%B2%94%EC%9C%84-%EB%B2%94%EC%9C%84-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0

 

[iOS] Swift 기본 데이터 형식( 타입 | 범위 + 범위 출력하기 )

타입 특징 값의 범위 Bool 논리 자료형 ( 참 혹은 거짓 ) True / False 둘 중 하나의 값만 저장 Int 기본 정수형 타입 -9223372036854775808~ 9223372036854775807 Int8 8비트 크기의 Int -128 ~ 127 Int16 16비..

where-i-am.tistory.com

느낀점

너무 감이 안오는데..!

어떤타입으로 리턴되는지도 매우 중요한 부분 중 하나.

 

 

728x90
반응형