파이썬_실전 프로젝트

프로젝트 오일러 4번문제 - 팰린드롬 수

팰린드롬이란 좌우대칭의 숫자나 문자열을 말합니다. 세자리의 두수를 곱해서, 가장 큰 팰린드롬 수를 찾는 문제입니다.

 

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.

 

팰린드롬 확인
if string == string[::-1]

팰린드롬 확인은 위의 코드처럼 해주면 됩니다. 문자열 slice 기능인데, 끝에 -1을 넣어주면, 거꾸로 뒤집혀서 출력됩니다. 그래서 두문자열이 같으면 팰린드롬이라고 할수 있겠죠.

 

루프구성
for i in range(900,1000):
    for j in range(900,1000):
        print(i*j,end=',')
810000,810900,811800,812700,813600,814500,815400,816300,817200,818100,819000,819900,820800,821700,822600,823500,824400,825300,826200,827100,828000,828900,829800,830700,831600,832500,833400,834300,835200,836100,837000,837900,838800,839700,840600,841500,842400,843300,844200,845100,846000,846900,847800,848700,849600,850500,851400,852300,853200,854100,855000,855900,856800,857700,858600,859500,860400,861300,862200,863100,864000,864900,865800,866700,867600,868500,869400,870300,871200,872100,873000,873900,874800,875700,876600,877500,878400,879300,880200,881100,882000,882900,883800,884700,885600,886500,887400,,,,,,,

가장 큰값을 찾는것이기 때문에, 세자리수중 900번대서부터 시작하면 됩니다.

 

결과
def isPalindrome(string):
    if string == string[::-1]:
        return True
    return False

maxValue = 0
for i in range(900,1000):
    for j in range(900,1000):
        product = i*j
        if isPalindrome(str(product)):
            print(product,"is Palindrome")
            if product>maxValue:
                maxValue = product
print(maxValue)
819918 is Palindrome
824428 is Palindrome
819918 is Palindrome
906609 is Palindrome
824428 is Palindrome
886688 is Palindrome
861168 is Palindrome
888888 is Palindrome
861168 is Palindrome
888888 is Palindrome
886688 is Palindrome
906609 is Palindrome
906609

 

댓글

댓글 본문
작성자
비밀번호
버전 관리
nomadlife
현재 버전
선택 버전
graphittie 자세히 보기