앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다.
두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다.
세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까?
역시 하나하나 해보면서 가장 큰 녀석을 찾는게 가장 빠른듯.
수학적으로 좀 더 나은 알고리즘을 만들 수는 있겠지만, 거기에 투자하는 시간보다
이게 훨씬 나아보인다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#!/usr/bin/env perl use 5.010; use strict; use warnings; my $max = 0; foreach my $i (100..999) { foreach my $j (100...999) { my $temp = $i * $j; if (($temp == reverse $temp) and $temp > $max) { $max = $temp; } } } say $max; |