본문 바로가기
Programming/Project Euler

Project Euler(프로젝트 오일러) Problem 4 - Python

by BACKK0M 2019. 4. 2.
반응형

문제

앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다.

두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 x 99) 입니다.

세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까?

Project Euler Problem 4

100 * 100 부터 999 * 999 까지 대칭수를 구하는 문제입니다.

100 * 100 부터 999 * 999 까지 계산을 진행하게 되는데, 계산 결과를 문자열로 바꾸어 저장(strData)하고, 문자열의 중간을 기준으로 하여 좌우가 같은지를 확인하게 됩니다.

우선 문자열 길이의 중간을 기준으로 잘라 첫 번째 숫자를 구합니다. 그리고 문자열의 맨 끝 부터 기준까지 거꾸로 받아와 두 번째 숫자를 구합니다.

 

* 문자열의 길이가 3일 경우 1을 빼준 이유

=> 두 번째 숫자를 구할 때 사용한 조건이 [ : int(mid) : -1] 인데, 마지막 인덱스를 포함하지 않고 문자열을 잘라주기 때문에 mid 값을 1 빼주었습니다.

=> 숫자 예: 906609

=> mid: 6 / 2 = 3

=> strLeft: 906 // [0,1,2] index

=> strRight: 906 // [5,4,3] index

=> strRight: 90 // [5,4] index (mid 값을 1 빼지 않은 경우)

 

Python code

 

답: 906609

반응형