티스토리 뷰
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | sum_result=0 HUNDRED_AND=10 for number in range(1,1001): sum=0 number_str=str(number) number_length=(len(number_str)) if(number_length==1): #한 자리 수 if(number==1 or number==2 or number==6): sum=sum+3 elif(number==3 or number==7 or number==8): sum=sum+5 elif(number==4 or number==5 or number==9): sum=sum+4 elif(number_length==2): #두 자리 수 first=number_str[0] second=number_str[1] if(first=='1'): #10~19는 특수한 경우 if(second=='0'): sum=sum+3 elif(second=='1' or second=='2'): sum=sum+6 elif(second=='3' or second=='4' or second=='8' or second=='9'): sum=sum+8 elif(second=='5' or second=='6'): sum=sum+7 elif(second=='7'): sum=sum+9 else: #20~99 if(first=='2' or first=='3' or first=='8' or first=='9'): sum=sum+6 elif(first=='5' or first=='6' or first=='4'): sum=sum+5 elif(first=='7'): sum=sum+7 if(second=='1' or second=='2' or second=='6'): sum=sum+3 elif(second=='3' or second=='7' or second=='8'): sum=sum+5 elif(second=='4' or second=='5' or second=='9'): sum=sum+4 elif(number_length==3): #세 자리 수 first=number_str[0] second=number_str[1] third=number_str[2] if(first=='1' or first=='2' or first=='6'): sum=sum+3+HUNDRED_AND elif(first=='3' or first=='7' or first=='8'): sum=sum+5+HUNDRED_AND elif(first=='4' or first=='5' or first=='9'): sum=sum+4+HUNDRED_AND if(second=='0'): #x01~x09 if(third=='1' or third=='2' or third=='6'): sum=sum+3 elif(third=='3' or third=='7' or third=='8'): sum=sum+5 elif(third=='4' or third=='5' or third=='9'): sum=sum+4 elif(third=='0'): sum=sum-3 elif(second=='1'): #x10~x19 if(third=='0'): sum=sum+3 elif(third=='1' or third=='2'): sum=sum+6 elif(third=='3' or third=='4' or third=='8' or third=='9'): sum=sum+8 elif(third=='5' or third=='6'): sum=sum+7 elif(third=='7'): sum=sum+9 else: #x20~x99 if(second=='2' or second=='3' or second=='8' or second=='9'): sum=sum+6 elif(second=='5' or second=='6' or second=='4'): sum=sum+5 elif(second=='7'): sum=sum+7 if(third=='1' or third=='2' or third=='6'): sum=sum+3 elif(third=='3' or third=='7' or third=='8'): sum=sum+5 elif(third=='4' or third=='5' or third=='9'): sum=sum+4 elif(number_length==4): #네 자리 수(1000) sum=sum+11 sum_result=sum_result+sum print(sum_result) | cs |
100 이상으로 갈 때 'hundred and'가 무조건 붙기 때문에 미리 관련 변수를 지정하여 연산해 주었는데,
생각해보니 100은 'one hundred'로 and가 붙지 않는 숫자였다.
그래서 100일 경우에만 특별하게 처리해주었고
나머지는 비슷한 코드로 구성하였다.
함수를 만들어 코드를 더 짧게 만들 수 있을 것 같다.
'Algorithm > Project Euler' 카테고리의 다른 글
프로젝트 오일러 13번 (0) | 2017.07.03 |
---|---|
프로젝트 오일러 19번 (0) | 2017.07.03 |
프로젝트 오일러 48번 (0) | 2017.07.03 |
프로젝트 오일러 42번 (0) | 2017.07.02 |
프로젝트 오일러 40번 (0) | 2017.07.02 |
댓글