728x90
반응형
이번 문제는 정수 제곱근이 있다면 제곱근 + 1의 제곱을 리턴하고 아니면 -1을 리턴하면 되는 문제였다.
문제
문제를 읽어보니 왠지 수학에 관련된 클래스를 사용하면 제곱근을 쉽게 구할 수 있을 것 같았다.
따라서, 코틀린에 부족한 나는 그 방법을 찾아보았고 math 클래스를 import하여 사용했다.
풀이
num변수를 만들어 sqrt()메소드를 사용한 이유는
sqrt()안의 파라미터를 Double이나 Float형으로만 삽입해야 되기 때문이었다.
따라서, sqrt() 메소드를 사용해 제곱근을 구했다.
테스트를 해보니 테스트 케이스 2번같이 3의 제곱근을 구하기 위해 sqrt()메소드를 실행하면
실제 그 제곱근을 리턴해주었다.
따라서, 이 때 리턴 값은 1.xxx가 나오는데 이를 어떻게 필터링할까 고민해보았다.
먼저 이 값은 Double형이고, 홀짝을 구분할 때 나머지 연산자를 사용하는 것을 먼저 떠올렸다.
그래서 어떤 값을 나머지 연산자를 사용하면 이 tempAnswer 변수가 정수인지 판단할까 고민했다.
tempAnswer 변수를 1로 나눈 나머지가 0.0이면 정수일 것이고 아니라면 소수점 아래 숫자가 있는 실수형일 것이다.
결국 나머지 연산을 한 결과가 실수형일 경우 -1을 리턴하고
아니라면 제곱근 + 1의 제곱을 리턴해야 했는데, 리턴하기 전에 문제에서 요구하는 리턴 타입은 Long 타입이었기 때문에
리턴될 answer 변수에 toLong() 메소드를 실행한 결과를 대입했다.
728x90
반응형
'프로그래머스' 카테고리의 다른 글
수박수박수박수? 코틀린(Kotlin) (0) | 2022.08.04 |
---|---|
없는 숫자 더하기 코틀린(Kotlin) (0) | 2022.08.03 |
핸드폰 번호 가리기 코틀린(Kotlin) (0) | 2022.08.01 |
서울에서 김서방 찾기 코틀린(Kotlin) (0) | 2022.07.29 |
가운데 글자 가져오기 코틀린(Kotlin) (0) | 2022.07.28 |