앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다.
두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다.
세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까?
Click
두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다.
세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까?
이번에도 단순 반복 알고리즘.
조금 신경을 썼다면 limit값부터 내려오면서 계산.
max값보다 작아지면 break를 하도록 하여 loop를 덜 돌도록 하였으나 이것도 얼마나 성과가 있을지.....
<script> /** 대칭수 판단. **/ function isPalindrome(n){ var temp = 0; var i; for(i=n; i>temp; i=parseInt(i/10)){ temp = temp*10 + i%10; } if(temp == i) return true; else false; } /** limit값부터 내려오며 max 대칭수 구함. **/ function p004(n){ var t=n; var max = 0; while(1){ if(t*t < max) break; for(var i=t; i>0; i--){ var temp = t*i; if(temp < max) break; if(isPalindrome(temp)){ max = temp; break; } } t--; } return max; } </script>
댓글 없음:
댓글 쓰기