Problem 4

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

문제

앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(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());

배운점

  • 가장 큰 수부터 코드를 작성한 사람이 있어 코드를 큰 수부터 돌아가도록 작성하였더니 속도가 조금 빨라졌다.
공유하기