본문 바로가기
Program/Python(Project Euler)

Python :: Project Euler 6번 문제 풀이

by 시레엔 2018. 5. 10.
반응형

안녕하세요.

오늘도 여전히 한자리수의 문제 풀이에 대한 포스팅을 진행하고 있네요.

꾸준히 해야지하면서도 아직까지 6번이라니, 정말 게으르다라는 느낌만 드네요. 아무튼 조금 더 꾸준히 포스팅을 하기로 마음먹으며, Project Euler 6번 문제 풀이를 포스팅해보도록 하겠습니다.



위의 예제로 나온 것은 1~10까지의 제곱의 합과 합의 제곱 간의 차이를 구하는 문제입니다. 기존과 비슷하게 1~10은 예제에 대한 답으로 다 주어지고 난 이후에 이번엔 1~100까지의 제곱의 합과 합의 제곱 간의 차를 구하라고 하네요.


사실 이 문제에 대해서는 단순하게 생각하면 되는 부분이기에 초기 세팅이라던지, 알고리즘이라든지 이런 것을 언급할 필요도 없는 문제인 것 같습니다.


a=list()

b=list()

for i in range(1,101,1) :

a.append(i)

b.append(i*i)


sum_sq=sum(a[:])*sum(a[:])

sq_sum=sum(b[:])


print(sum_sq-sq_sum)


위에 코드에서는 sum_sq라는 것은 모두 더해서 제곱하는 과정을 말하며, sq_sum은 반대의 과정을 말합니다. 그래서 두가지의 변수에 대한 차를 구해주면, 정답을 쉽게 구할 수 있는 문제입니다.


다만, 위의 코드의 문제점은 sum_sq와 sq_sum에서 상대적으로 크기의 우위에 있는 변수가 어디있는지 모른다는 것입니다. 그래서 추가적으로 구성한다면, if문을써서 "sum_sq"가 더 크면 "sum_sq-sq_sum"이라는 것으로 Print를 해주는 것이나 반대의 경우를 잘 생각해서 결론을 정수로 도출을 하거나 아니면 파이썬의 내장함수인 abs를 사용하여 절대값 기호를 해주는 것이 중요하다고 생각합니다.


이 문제는 사실상 단순하기에 쉽게 풀이하셨을 것이라고 생각합니다.

반응형

댓글