반응형
문제
앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다.
두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 x 99) 입니다.
세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까?
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 빼지 않은 경우)
답: 906609
반응형
'Programming > Project Euler' 카테고리의 다른 글
Project Euler(프로젝트 오일러) Problem 3 - Python (0) | 2019.04.02 |
---|---|
Project Euler(프로젝트 오일러) Problem 2 - Python (0) | 2019.04.02 |
Project Euler(프로젝트 오일러) Problem 1 - Python (0) | 2019.04.02 |