티스토리 뷰
문제 설명
어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 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 |
최근에 올라온 글