Script / CSS

G1sUtil.js

G1sBlogger.js

G1sNavigationList.js

G1sCode

G1sTagList

Posts List

2012년 2월 14일 화요일

[Project Euler] 4. 세자리 수를 곱해 만들 수 있는 가장 큰 대칭수

4. 세자리 수를 곱해 만들 수 있는 가장 큰 대칭수

앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다.
두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다.
세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까?
Click
이번에도 단순 반복 알고리즘.
조금 신경을 썼다면 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>

댓글 없음:

댓글 쓰기