Project Euler - 004(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)라고 부릅니다.
두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다.
세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까?
풀이과정
이번 문제는 좀 어려웠다.
대칭수를 구하는 부분에서 어떻게 해야하나 많은 고민을 했다.
처음에는 리스트를 이용해 역순정렬을 하려고 했지만, 문자열을 바로 역순으로 보여주는 문법이 있어 이를 응용했다.
(자세한 자료는 아래 참고사이트에서 확인)
대칭수를 구하는 부분에서 어떻게 해야하나 많은 고민을 했다.
처음에는 리스트를 이용해 역순정렬을 하려고 했지만, 문자열을 바로 역순으로 보여주는 문법이 있어 이를 응용했다.
(자세한 자료는 아래 참고사이트에서 확인)
내가 푼 답안
# 대칭수를 찾기 위한 함수# 넘어온 굿자를 문자열화 시킨다.(숫자는 안되기 때문...)num_str =#print("구하고자 하는 수 : ", num_str)# 대칭수인지 아닌지 판별을 위해 문자를 뒤집는다.num_str_reverse =#print("문자를 뒤집는다. : ", num_str_reverse)if num_str==num_str_reverse:#print("%d 는 대칭수 입니다." %num)return Trueelse:#print("%d 는 대칭수가 아닙니다." %num)return False# palindrome(9009)lst =for x in :for y in :num = x * yif ==True and < num:= num= x= yreturn lstprint("두자리 수의 곱 중 가장 큰 대칭 수 구하기")num =print("대칭수 : %d\n1번수 : %d\n2번수 : %d" % (, , ))print("===" * 50)print("세자리 수의 곱 중 가장 큰 대칭 수 구하기")num =print("대칭수 : %d\n1번수 : %d\n2번수 : %d" % (, , ))
참고사이트
#Project_Euler #question4 #프로젝트_오일러 #python3 #Largest_palindrome_product #palindrome #StackOverflow #reverse #Extended_Slices