[Q4] Largest palindrome product

xzero·2020년 5월 23일
0

Project_Euler

목록 보기
2/2
post-thumbnail

들어가기

오늘 살펴볼 문제는 Q4 입니다.

https://projecteuler.net/problem=4


문항해설

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


앞에서 읽으나 뒤에서 읽으나 같은 수를 "palindrome"이라고 정의했네요. 3자리수 두개의 곱으로 만들 수 있는 가장 큰 palindrome를 찾는 문제입니다.


예시코드

result, a, b = 0, 0, 0

for i in range(100, 1000):
    for j in range(100, 1000):
        k = str(i * j)
        reverse_k = k[::-1]
        if k == reverse_k and result < int(k):
            result = int(k)
            a, b = i, j

print("가장 큰 수는 {}이다.".format(result))
print("두 수는 {},{}이다. ".format(a, b))

# 가장 큰 수는 906609이다.
# 두 수는 913,993이다.
  • result, a, b = 0, 0, 0 는 세 변수에 각각 0을 할당하라는 명령입니다.
  • i에 대하여 j를 곱하면서 모든 세자리의 곱을 순환하는 구문입니다.

위의 구문을 좀 자세히 살펴봅시다.

k = str(i * j)
reverse_k = k[::-1]
  • i*j의 값을 문자열로 바꾸어 k에 저장합니다.
  • k[::-1]은 k에 저장된 문자열을 뒤집어 만든 복사본을 만듭니다.
if k == reverse_k and result < int(k):
  • 첫번째에서 주어진 k가 palindrome 인지를 판단합니다. 그렇다면 result < int(k)가 의미하는 것은 무엇일까요?
    • 가장 큰 값을 찾기 위한 구문입니다. 즉 palindrome을 저장한 result 값에 대하여 지금 있는 값보다 더 큰 경우에만 result값을 대치하는 것입니다.
    • 최댓값, 최솟값을 구할 때 흔이 사용되는 문법 구조입니다.

마무리

palindrome에 대한 설명은 아래에서 찾아볼 수 있습니다.
https://en.wikipedia.org/wiki/Palindrome
그런데 내용을 살펴보면 흥미로운 것들이 많네요. 아직 풀리지 않은 문제도 있구요.
https://en.wikipedia.org/wiki/Palindrome#Numbers

profile
coding & mathematics

0개의 댓글