앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다.
두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다.
세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까?
#Python
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def myReverse(targetList): | |
for index in range(len(targetList) -1, -1, -1): | |
yield targetList[index] | |
def isSymmetryNum(targetNumber): | |
targetList=list(str(targetNumber)) | |
result=list() | |
for char in myReverse(targetList): | |
result.append(char) | |
reversedNum=int(''.join(result)) | |
return targetNumber==reversedNum | |
result=isSymmetryNum(1234) | |
print (result) | |
target1=range(1,1000) | |
target2=range(1,1000) | |
biggestNum=0 | |
for n1 in target1: | |
for n2 in target2: | |
a=n1*n2 | |
if isSymmetryNum(a) and biggestNum < a : | |
biggestNum=a | |
print(biggestNum) |
#Ruby
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def myReverse(targetNum) | |
numList=Array.new() | |
targetNumStr=targetNum.to_s() | |
return targetNumStr.reverse().to_i() | |
end | |
def isSymmetryNum(targetNum) | |
reversedNum=myReverse(targetNum) | |
return reversedNum == targetNum | |
end | |
n1=Array.new(999) {|x| x+1} | |
n2=Array.new(999) {|x| x+1} | |
biggestNum=0 | |
for i in n1 | |
for j in n2 | |
r=i*j | |
if isSymmetryNum(r) and biggestNum < r | |
biggestNum=r | |
end | |
end | |
end | |
puts biggestNum |
두 언어를 모두 배우는 중입니다.
더 좋은 코드와 솔루션 있으시면 알려주시면 감사하겠습니다. :)
루비와 파이썬의 접근 방식이 많이 다른 것 같다.같이 공부하기 힘드네 --;
Perl
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/perl | |
use strict; | |
use warnings; | |
sub is_symmetry_num { | |
my($num) = @_; | |
my $reversed_num = scalar reverse $num; | |
if ($reversed_num == $num) { | |
return 1; | |
} else { | |
return 0; | |
} | |
} | |
my @target1 = (1..1000); | |
my @target2 = (1..1000); | |
my $biggest_num = 0; | |
foreach my $num1 (@target1) { | |
foreach my $num2 (@target2) { | |
my $a = $num1 * $num2; | |
if (is_symmetry_num($a) and $biggest_num < $a) { | |
$biggest_num = $a; | |
} | |
} | |
} | |
print $biggest_num; |