Algorithm/Project Euler

프로젝트 오일러 36번

할루루 2017. 6. 30. 13:29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import math
sum=0
for a in range(0,1000001):
    numberDecimal=str(a)
    numberBinary=str(bin(a))[2:len(str(bin(a)))]
    decimal_length=len(numberDecimal)
    binary_length=len(numberBinary)
    decimal_count=math.ceil(decimal_length/2)
    binary_count=math.ceil(binary_length/2)
    index_decimal_a=0
    index_decimal_b=decimal_length-1
    index_binary_a=0
    index_binary_b=binary_length-1
    decimal_judgement=0
    binary_judgement=0
    for aa in range(0,decimal_count):
        if(numberDecimal[index_decimal_a]==numberDecimal[index_decimal_b]):
            decimal_judgement=decimal_judgement+1
        index_decimal_a=index_decimal_a+1
        index_decimal_b=index_decimal_b-1
    for bb in range(0,binary_count):
        if(numberBinary[index_binary_a]==numberBinary[index_binary_b]):
            binary_judgement=binary_judgement+1
        index_binary_a=index_binary_a+1
        index_binary_b=index_binary_b-1
    if(decimal_judgement==decimal_count and binary_judgement==binary_count):
        sum=sum+int(numberDecimal)
print(sum)
cs

 

 

 

for문을 위한 변수를 각각 10진수와 2진수로 표현한 것을 문자열로 담은 후

 

각각의 문자열 길이, 그리고 그 길이를 조작해서 구할 수 있는 index 등의 값을 이용하여

 

답을 구하였다.