2015년 8월 21일 금요일

LeetCode Happy Number


https://leetcode.com/problems/happy-number/
숫자의 각 자리 수를 제곱해서 합을 내고, 그것을 또 반복해서 마지막에 1이 나오는 수는 Happy Number 라고 정의를 했다.
이것은 숫자 n을 입력받았을 때, 그 수가 happy 한지 아닌지 판단해 내는 프로그램이다.
기본적인 idea는 간단하다. 각자리 숫자를 n%10 으로 해서 가져오고, 10으로 나눠 맨 뒷자리를 삭제하는 것이다. 두번째 while(n > 0) 은 놓치기 쉬운 edge 부분인데, 100 이라면 10으로 두번 나누면 1이 남고 마지막 것도 해줘야 하기 때문에 n이 0보다 클 동안은 계속 하는 것으로 했다.
이 연산을 할 때 1로 가지 못하고 영원히 연산이 끝나지 않는 경우는 언젠가 한번은 이전에 나왔던 중복된 수가 나오게 된다. 그렇기 때문에 HashSet 을 이용해서 삽입하면서 자동으로 판단할 수 있게 했다.

댓글 없음:

댓글 쓰기