181102_(金) - PassionOfStudy/Algorithm GitHub Wiki
Programmers_(Determine Square Root Of Integer)
Determining Square Root Of Integer
정수 제곱근 판별My Solution
처음에 직관적으로 생각하니 쉬웠다. 하지만 직관적인 생각을 논리적으로 풀어쓰는 것이 어려웠다.
제곱근이 정수인지 아닌지를 판별할 때 sqrt()메서드를 사용하여 '결과값이 소수점자리가 있다면 정수가 아니다'라는 사실은 직관적으로는 '소수점(.)아래의 값이 0이 아니면 정수가아니고, 0이면 정수이다'이지만 이것을 어떻게 논리적으로 코드를 구현할 것인가에 대해 생각했다.
10분정도 생각을 해도 생각이 나지 않아서 인터넷을 검색했다. 생각보다 간단했다. 코드로는 형변환을 이용하는 것이었다.
sqrt()메서드의 결괏값을 a, a를 Int형으로 형변환한 값을 b = Int(a)라고 한다면, a와 b를 비교하여 같으면 정수이고 다르면 정수가 아닌 것이다.(여기서 Swift는 타입에 철저한 타입을 맞춰주기 위해서 Double(b)를 다시 해준다.)
이것을 이용해서 정수이면 입력받은 값 +1을 제곱한 결과를 리턴하고 정수가아니면 -1값을 리턴하면 된다.
Other Solution
구현하는 큰 틀은 다들 비슷했다. 코드를 구현하는 스타일이나 알고있는 메서드를 잘 활용하느냐의 차이였다.
다른 해답들을 보면서 다양한 library함수들에 대해서 알게되었다.
ex) squareRoot(), floor(), truncatingRemainder(dividingBy: ), rounded() 등등..
다음에 비슷한 문제가 있다면 사용해봐야겠다.