[그림 01] Problem 006 문제
문제 이름 : 합해서 제곱과 제곱해서 합하는 것의 차이
문제 내용 : 1,2,3,4 ... 10을 각각 제곱해서 더하면 385입니다. 그리고 1,2,3,4 ... 10을 미리 더한 후 제곱을 하면 55의 제곱이고 이는 3025입니다. 그리고 그 차이는 2640입니다. 그렇다면 이 범위를 100으로 넓히고 그 차이는 얼마입니까?
우리는 여기서 다음과 같은 조건을 알 수 있습니다.
1. 1~100의 각각의 제곱을 더해야 하는 값이 필요함
2. 1~100을 모두 더한 후 제곱을 하는 값이 필요함
3. 위의 둘의 차이를 구함
굉장히 간단합니다.
다짜고짜 소스를 작성했습니다.
#Problem 006 #Python 3 version source def getSquaresOfFirstHundred(Range_Num): #1**2 + 2**2 + 3**2 + 4**2 + 10**2 = 385 num = 0 for i in range(1, Range_Num+1): num += i**2 return num def getSumOfTheFirstHundred(Range_Num): #(1+2+3+...10)**2 = 55**2 = 3025 num = 0 for i in range(1, Range_Num+1): num += i return num**2 if __name__ == "__main__": Main_Range = 100 Main_SquaresOfFirstHundred = getSquaresOfFirstHundred(Main_Range) Main_SumOfTheFirstHundred = getSumOfTheFirstHundred(Main_Range) print(Main_SumOfTheFirstHundred - Main_SquaresOfFirstHundred)
위의 소스는 단순합니다.
getSquareOfTheFirstHundred와 getSumOfTheFirstHundred함수를 각각 선언하고, 두 값을 구합니다.
그리고 이 둘을 뺀 값을 출력합니다.
저보다 굉장히 잘하는 분이 작성하신 소스코드는 다음과 같습니다.
r = range(1, 101) a = sum(r) print a * a - sum(i*i for i in r)
이런 간단한 문제에서도 격이 느껴지네요.
저는 아직까지 Python의 장점을 제대로 활용하고 있지 않은 것 같습니다.
좀 더 활용할 수 있도록 간단한 소스를 작성할 수 있도록 해야 할 것 같습니다. ㅎㅎ
'PYTHON > Project Euler(프로젝트 오일러)' 카테고리의 다른 글
Problem_010_Summation of primes (0) | 2017.01.20 |
---|---|
Problem_009_Special Pythagorean triplet (0) | 2017.01.20 |
Problem_008_Largest product in a series (0) | 2017.01.09 |
Problem_007_10001st prime (0) | 2017.01.09 |
Problem_005_Smallest Multiple (0) | 2017.01.06 |
Problem_004_Largest palindrome product (0) | 2017.01.03 |
Problem_003_Largest prime factor (0) | 2016.12.30 |
Problem_002_Even Fibonacci numbers (0) | 2016.12.28 |