[그림 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의 장점을 제대로 활용하고 있지 않은 것 같습니다.

좀 더 활용할 수 있도록 간단한 소스를 작성할 수 있도록 해야 할 것 같습니다. ㅎㅎ



+ Recent posts