본문 바로가기
🍎 Swift/Programmers

[👾 Programmers] 19. 정수 제곱근 판별

by 솔비님 2024. 6. 23.

1. 문제 설명 (📎Link)

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. 

n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

 

2. 제한사항

n은 1이상, 50000000000000 이하인 양의 정수입니다.


📝 문제

func solution(_ n:Int64) -> Int64 {
    return 0
}

 

 

💻 내가 푼 방법(테스트 성공)

func solution(_ n:Int64) -> Int64 {
    //x는 양의정수이므로 1로 변수 선언
    var x = 1
    
    //x의 제곱이 n보다 작을 때 까지 x를 1씩 증가
    while x * x < n {
        x += 1 }
    
    //삼항연산자 활용 -> x의 제곱이 n이면 x+1의 제곱 반환, 아닐 경우 -1 반환
    //들어오는 양의 정수 n은 Int 값이므로 Int64와 구분할 것
    //반환되는 값은 Int64로 
    return Int(n) == x * x ? Int64((x + 1) * (x + 1)) : Int64(-1)
}

🔎 의문점과 공부한 것

1. 삼항 연산자의 활용

A?B:C → A면 B를 반환한다. 아닐 경우 C를 반환한다.

2. Int64가 문제로 주어질 경우 다른 문제들과 동일하게 형변환에 신경써줄 것!