728x90
코딩 테스트 풀이 체크리스트 |
|
2시간 내에 풀었는가? | O |
본인의 실력으로 풀었는가? | O |
코딩테스트 연습 - 정수 제곱근 판별
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함
programmers.co.kr
class Solution {
fun solution(n: Long): Long {
var temp = Math.sqrt(n.toDouble()).toLong();
return if (temp * temp == n) (temp + 1) * (temp + 1) else -1;
}
}
테스트 1 〉 | 통과 (0.07ms, 62.5MB) |
테스트 2 〉 | 통과 (0.04ms, 60.7MB) |
테스트 3 〉 | 통과 (0.08ms, 63.7MB) |
테스트 4 〉 | 통과 (0.04ms, 64.1MB) |
테스트 5 〉 | 통과 (0.03ms, 64MB) |
테스트 6 〉 | 통과 (0.07ms, 63.3MB) |
테스트 7 〉 | 통과 (0.03ms, 63.6MB) |
테스트 8 〉 | 통과 (0.03ms, 63MB) |
테스트 9 〉 | 통과 (0.04ms, 63MB) |
테스트 10 〉 | 통과 (0.03ms, 64.2MB) |
테스트 11 〉 | 통과 (0.03ms, 62.5MB) |
테스트 12 〉 | 통과 (0.03ms, 62.1MB) |
테스트 13 〉 | 통과 (0.09ms, 62.7MB) |
테스트 14 〉 | 통과 (0.04ms, 62.4MB) |
테스트 15 〉 | 통과 (0.03ms, 64.7MB) |
테스트 16 〉 | 통과 (0.04ms, 62.9MB) |
테스트 17 〉 | 통과 (0.03ms, 64MB) |
테스트 18 〉 | 통과 (0.04ms, 64.5MB) |
Math.sqrt()로 n의 제곱근을 구하는데, 이 때 안에 넣을 숫자는 double형으로 넣어야 error: type mismatch: inferred type is Long but Double was expected 오류가 뜨지 않는다.
그래서 n.toDouble()로 형 변환 후 파라미터로 넣었음.
그리고 리턴값은 long이길 원해서 toLong()으로 형 변환을 했음..
그리고나서 if문을 돌릴 때 그냥 리턴 값인 temp의 제곱이 n과 일치한지를 파악하고, 맞으면 temp + 1의 제곱을 리턴, 아니면 -1을 리턴하도록 작성하였다.
이 때 제곱을 구하는 것은 그냥 (temp + 1) * (temp + 1)로 작성하였지만,
Math.pow((temp + 1).toDouble(), 2.0)으로도 작성할 수 있다.
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[kotlin] 프로그래머스 - 자연수 뒤집어 배열로 만들기 (1단계) (0) | 2022.04.05 |
---|---|
[kotlin] 프로그래머스 - 정수 내림차순으로 배치하기 (1단계) (0) | 2022.04.05 |
[Java] 프로그래머스 - 없는 숫자 더하기 (1단계) (0) | 2022.04.04 |
[kotlin] 프로그래머스 - 제일 작은 수 제거하기 (1단계) (0) | 2022.04.04 |
[kotlin] 프로그래머스 - 짝수와 홀수 (1단계) (0) | 2022.04.04 |