003. Largest palindrome product

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.

Find the largest palindrome made from the product of two 3-digit numbers.

  • Palindrome(회문, 대칭수)이란 뒤집어서 읽어도 자기자신과 같은 문자열을 뜻한다.
  • 우리는 3자리의 숫자(100~999)까지의 숫자를 곱했을 때 가장 큰 대칭수를 구하는 것이다!
def is_palindrome(number=121):
    data = str(number)
    return True if data == data[::-1] else False

def euler004(digit=3):
    result_list = []
    for y in range((10**digit)-1,(10**(digit-1)-1), -1):
        for x in range((10**digit)-1,(10**(digit-1)-1), -1):
            if is_palindrome(y*x):
                result_list.append((y*x, y, x))

    return max(result_list)[0]
  • 코드는 크게 두 부분으로 나뉜다.
    1. is_palindrome : 어떠한 숫자가 들어 왔을 때에 회문인지 아닌지를 판단한다. 위의 코드는 간단하게 list의 slicing을 이용하였다.
    2. 탐색의 범위는 사실 범위가 그렇게 크지 않아서 전체를 탐색해도 되지만, 우리는 가장 회문을 찾는 것이므로 뒤에서 부터 한자리수 전체만 탐색을 해서 탐색의 횟수를 조금이라도 줄였다! \(999\times999 \sim 99\times99\)의 범위를 탐색한다!