Q4_Largest palindrome product
들어가기
오늘 살펴볼 문제는 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 .
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
Leave a Comment