이 문제에는 두 가지 복병이 기다리고 있었다. 하나는 A* Search Algorithm 알고리즘이었다. 여러 가지 방법을 생각해 보았지만 A* 알고리즘을 사용하지 않고는 풀 수 없었다. 구글로 검색해보면 A* 알고리즘에 대한 설명을 찾을 수 있지만 이해하기가 쉽지 않았다. 얼마 전 Couresra에서 Algorithms, Part I을 수강한 후에야 A* 알고리즘을 이해할 수 있었다.
프로그래밍 또는 보안 관련 책을 읽다 보면 종종 '모래상자'란 용어가 나온다. 'sandbox'를 '모래상자'로 번역한 것이다. '모래상자'란 단어를 보면 어떤 그림이 떠오르는가? 'sandbox'를 직역하면 '모래상자'가 맞긴 하지만, 나는 이렇게 번역하는 게 마음에 들지 않는다.
가족과 함께 외국에 와서 적응하는 것은 생각했던 것보다 어려웠다. 내 한 몸 챙기기도 버거운데 가족 일까지 신경을 써야 해서 힘에 부쳤다. 한국에서 회사를 옮긴 경우에는 새 회사에 적응하는 데 집중할 수 있었지만, 여기서는 나만 적응한다고 되는 게 아니다. 다른 식구들도 새로운 환경에 적응할 수 있도록 도와야 한다.
이 문제를 푸는 데 Math.sqrt를 사용할 수는 없다. Math.sqrt가 리턴하는 double 형의 유효자리 숫자는 고작 17자리에 불과하다. 제곱근의 자릿수를 원하는 만큼 구할 수 있는 다른 방법이 필요하다. 다행히 Sqrt root by substraction에 정수의 제곱근을 구하는 방법이 자세히 나와 있다.