티스토리 뷰

코딩테스트

Lv.0 swift 제곱수 판별하기

알롱도담쓰 2024. 3. 18. 22:25

문제 설명

어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.

 

제한 조건

1 ≤ n ≤ 1,000,000

 

내 답안

접근 방법

이건 몰랐다...

 

다른 풀이

func solution(_ n: Int) -> Int { sqrt(Double(n)) == floor(sqrt(Double(n))) ? 1 : 2 }

 

sqrt()는 double 값을 반환하는데, 이 반환값을 내림했을 때랑 비교해서 같으면 (제곱근이라서) 1을 반환

예) 반환값이 31.12345인데 내림하면 31이 돼서 처음 반환값가 다르다 따라서 제곱근이 아니기 때문에 2를 반환

 

func solution(_ n:Int) -> Int {
    return n % Int(sqrt(Double(n))) == 0 ? 1 : 2
}

 

제곱수를 제곱근으로 나누면 나누어 떨어지기 때문에 나머지가 0이다

 

func solution(_ n:Int) -> Int {
 let root = Int(sqrt(Double(n)))
    return root * root == n ? 1 : 2
}

 

 

알게 된 것

  • floor() : 소수점 아래 내림
  • sqrt(_:) : 제곱근 반환

'코딩테스트' 카테고리의 다른 글

Lv.0 swift 수 조작하기  (0) 2024.03.20
Lv.0 swift 문자열 앞의 n글자  (1) 2024.03.19
Lv.0 swift 모음 제거  (0) 2024.03.18
Lv.0 Swift 문자 반복 출력하기  (0) 2024.03.18
Lv.0 swift 자릿수 더하기  (0) 2024.03.18
최근에 올라온 글