세자리 수를 곱해 만들 수 있는 가장 큰 대칭수
문제
앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다.
두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다.
세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까?
풀이 (본인)
작은 수 부터
1 2 3 4 5 6 7 8 9 10 11 12 13
| var maxNum = 0; for(var num = 100; num<1000; num++){ var multi = 0; for(var innerNum = 100; innerNum<1000; innerNum++){ multi = num * innerNum; if(multi === (''+multi).split('').reverse().join('')*1){ if(multi>maxNum){ maxNum = multi; } } } } console.log(maxNum);
|
큰 수 부터
1 2 3 4 5 6 7 8 9 10 11 12 13
| var maxNum = 0; for(var num = 999; num>=100; num--){ var multi = 0; for(var innerNum = 999; innerNum>=100; innerNum--){ multi = num * innerNum; if(multi === (''+multi).split('').reverse().join('')*1){ if(multi>maxNum){ maxNum = multi; } } } } console.log(maxNum)
|
풀이 (다른 사람)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| function getPalindrome(){ var maximum = 0; for(var i = 999; i>99; i--){ for(var j = 999; j>99; j--){ var tempResult = i*j; var reverseNum = tempResult.toString().split('').reverse().join(''); if( tempResult == reverseNum){ if(maximum < tempResult){ maximum = tempResult; } } } } return maximum; } console.log("maximun : "+getPalindrome());
|
배운점
- 가장 큰 수부터 코드를 작성한 사람이 있어 코드를 큰 수부터 돌아가도록 작성하였더니 속도가 조금 빨라졌다.